diff --git a/hash/amiga_cd.xml b/hash/amiga_cd.xml
new file mode 100644
index 0000000000000..231745ce83cac
--- /dev/null
+++ b/hash/amiga_cd.xml
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+
+
+ Kang Fu
+ 1996
+ GREat Effects Development (GREED)
+
+
+
+
+
+
+
+
+
+
+
+ Aminet Games
+ 2000
+ Schatztruhe
+
+
+
+
+
+
+
+
+
+ Ten on Ten Compilation (Europe)
+ 1995
+ Almathera
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hash/cassvisn_cart.xml b/hash/cassvisn_cart.xml
index 9fbb64e17bb68..fc95747bfd9ed 100644
--- a/hash/cassvisn_cart.xml
+++ b/hash/cassvisn_cart.xml
@@ -29,7 +29,7 @@ Note on PRG size (from CPU documentation)
Physically, 128 * 15 * 12 = 23,040 bits
Logically, 127 * 15 * 12 = 22,860 bits (as final word of each page is inaccessible by the CPU)
-the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 15 * (12+4)
+the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 15 * (12+4)
-->
@@ -43,7 +43,7 @@ the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 1
-
+
@@ -65,7 +65,7 @@ the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 1
-
+
Galaxian
@@ -76,7 +76,7 @@ the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 1
-
+
@@ -92,7 +92,7 @@ the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 1
-
+
@@ -211,5 +211,5 @@ the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 1
-
+
diff --git a/hash/cd32.xml b/hash/cd32.xml
index 4e27a0023e68b..035ba8699f0e4 100644
--- a/hash/cd32.xml
+++ b/hash/cd32.xml
@@ -75,7 +75,6 @@ license:CC0-1.0
James Pond 3: Operation Starfi5h [Kixx]
John Barnes European Football
Jungle Strike
- Kang Fu (AmigaCD)
Karaoke: Julsånger I
Kingpin: Arcade Sports Bowling
Labyrinth Of Time, The
diff --git a/hash/cdtv.xml b/hash/cdtv.xml
index 011f89b0a2a5a..c592be9bebdff 100644
--- a/hash/cdtv.xml
+++ b/hash/cdtv.xml
@@ -2665,129 +2665,4 @@ cd32: boot OK
-
-
-
-
-
- Ten on Ten Compilation (Europe)
- 1995
- Almathera
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/hash/megadriv.xml b/hash/megadriv.xml
index c36c6f9750133..e829d519ede6f 100644
--- a/hash/megadriv.xml
+++ b/hash/megadriv.xml
@@ -3019,7 +3019,7 @@ Crashes after EA logo, requires better [VDP] irq handling
+ See: https://www.youtube.com/watch?v=_1uGkfw5ky8 -->
Fix-it Felix Jr. (v1.0)
2013
diff --git a/hash/microvision.xml b/hash/microvision.xml
index 914aad3f7b8b3..50d6ad200e544 100644
--- a/hash/microvision.xml
+++ b/hash/microvision.xml
@@ -258,7 +258,7 @@ The "butmask" feature indicates cartridge button restrict mask (active-low)
MicroBird
2018
- Ayza
+ azya
@@ -271,7 +271,7 @@ The "butmask" feature indicates cartridge button restrict mask (active-low)
Tetris (TMS1100 version)
2019
- Ayza
+ azya
@@ -285,7 +285,7 @@ The "butmask" feature indicates cartridge button restrict mask (active-low)
Tetris (8021 version)
2018
- Ayza
+ azya
diff --git a/hash/nes.xml b/hash/nes.xml
index 57d16689c65dc..4508925253f04 100644
--- a/hash/nes.xml
+++ b/hash/nes.xml
@@ -28760,6 +28760,24 @@ license:CC0-1.0
+
+
+ PCM Demo With Graphics
+ 2009
+ frantik
+
+
+
+
+
+
+
+
+
+
+
+
+
Peepar Time (Japan)
1990
diff --git a/hash/spectrum_cass.xml b/hash/spectrum_cass.xml
index bce7a30f1761f..7d3b910bfe34b 100644
--- a/hash/spectrum_cass.xml
+++ b/hash/spectrum_cass.xml
@@ -72378,7 +72378,7 @@ Side B - Game 1: The Dragonstar Trilogy Part III (Delta 4 Software)
-
+
Éditeur de Manoir
2012
diff --git a/src/devices/bus/rs232/teletex800.cpp b/src/devices/bus/rs232/teletex800.cpp
index 46bac3bb5fd1f..0bde70f4f677c 100644
--- a/src/devices/bus/rs232/teletex800.cpp
+++ b/src/devices/bus/rs232/teletex800.cpp
@@ -88,7 +88,7 @@ class teletex_800_device : public device_t, public device_rs232_port_interface
m_all_led.resolve();
m_time_led.resolve();
m_date_led.resolve();
- m_year_led.resolve();
+ m_year_led.resolve();
m_rx_digits.resolve();
m_tx_digits.resolve();
}
@@ -129,7 +129,7 @@ class teletex_800_device : public device_t, public device_rs232_port_interface
{
}
- constexpr static const z80_daisy_config z80_daisy_chain[] =
+ constexpr static const z80_daisy_config z80_daisy_chain[] =
{
{ nullptr }
};
diff --git a/src/devices/bus/sg1000_exp/sk1100.cpp b/src/devices/bus/sg1000_exp/sk1100.cpp
index f65451827bdc5..f0ad03885629b 100644
--- a/src/devices/bus/sg1000_exp/sk1100.cpp
+++ b/src/devices/bus/sg1000_exp/sk1100.cpp
@@ -90,7 +90,7 @@ static INPUT_PORTS_START( sk1100_keys )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"\u2193") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) // U+2193 = ↓
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"] \u30E0 } \u300d LIST") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(']', 0x30e0) PORT_CHAR('}', 0x300d) // ム 」
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"[ \u309C { \u300c THEN") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[', 0x309c) PORT_CHAR('{', 0x300c) // ゜ 「
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"[ \u309C { \u300c THEN") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[', 0x309c) PORT_CHAR('{', 0x300c) // ゜ 「
PORT_START("PA5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"6 \u30AA & COLOR") PORT_CODE(KEYCODE_6) PORT_CHAR('6', 0x30aa) PORT_CHAR('&', 0x30a9) // オ ォ
diff --git a/src/devices/cpu/e0c6200/e0c6200.cpp b/src/devices/cpu/e0c6200/e0c6200.cpp
index e8c8852af9c96..83c3eec704bd2 100644
--- a/src/devices/cpu/e0c6200/e0c6200.cpp
+++ b/src/devices/cpu/e0c6200/e0c6200.cpp
@@ -4,17 +4,17 @@
Seiko Epson E0C6200 CPU core and E0C62 MCU family
- References:
- - 1998 MF297-06a E0C6200/E0C6200A Core CPU Manual
- - 1998 MF1049-01a E0C6S46 Technical Manual
+References:
+- 1998 MF297-06a E0C6200/E0C6200A Core CPU Manual
+- 1998 MF1049-01a E0C6S46 Technical Manual
- E0C6200 is a CPU core used as the basis of many chips, it is not standalone.
- Seiko Epson often changed prefixes of their device names. Depending on when,
- the E0C6200 is known as SMC6200, E0C6200, S1C6200.
+E0C6200 is a CPU core used as the basis of many chips, it is not standalone.
+Seiko Epson often changed prefixes of their device names. Depending on when,
+the E0C6200 is known as SMC6200, E0C6200, S1C6200.
- TODO:
- - RLC is part of the r,q opcodes and requires that r == q, what happens otherwise?
- - documentation is conflicting on whether or not the zero flag is set on RLC/RRC
+TODO:
+- RLC is part of the r,q opcodes and requires that r == q, what happens otherwise?
+- documentation is conflicting on whether or not the zero flag is set on RLC/RRC
*/
@@ -839,7 +839,7 @@ void e0c6200_cpu_device::execute_one()
// illegal opcode
default:
- logerror("unknown opcode $%03X at $%04X\n", m_op, m_prev_pc);
+ op_illegal();
break;
} // 0xff0
diff --git a/src/devices/cpu/e0c6200/e0c6200.h b/src/devices/cpu/e0c6200/e0c6200.h
index 0024092e02ad7..58c4769d55c3e 100644
--- a/src/devices/cpu/e0c6200/e0c6200.h
+++ b/src/devices/cpu/e0c6200/e0c6200.h
@@ -91,6 +91,7 @@ class e0c6200_cpu_device : public cpu_device
void inc_x();
void inc_y();
void do_branch(int condition = 1);
+ void op_illegal();
// opcode handlers
u8 op_inc(u8 x);
diff --git a/src/devices/cpu/e0c6200/e0c6200op.cpp b/src/devices/cpu/e0c6200/e0c6200op.cpp
index 93ab8011f7d86..d637c3cb3121a 100644
--- a/src/devices/cpu/e0c6200/e0c6200op.cpp
+++ b/src/devices/cpu/e0c6200/e0c6200op.cpp
@@ -116,6 +116,11 @@ void e0c6200_cpu_device::do_branch(int condition)
m_pc = m_jpc | (m_op & 0xff);
}
+void e0c6200_cpu_device::op_illegal()
+{
+ logerror("unknown opcode $%03X at $%04X\n", m_op, m_prev_pc);
+}
+
// common opcodes (simpler ones are handled directly)
// note: it is implied that all opcodes below except RRC take 7 clock cycles (5 already deducted)
diff --git a/src/devices/cpu/e0c6200/e0c6s46.cpp b/src/devices/cpu/e0c6200/e0c6s46.cpp
index fcc9ac6c5cfcf..02b8d25faca53 100644
--- a/src/devices/cpu/e0c6200/e0c6s46.cpp
+++ b/src/devices/cpu/e0c6200/e0c6s46.cpp
@@ -2,16 +2,18 @@
// copyright-holders:hap
/*
- Seiko Epson E0C6S46 MCU
- QFP5-128pin, see manual for pinout
+ Seiko Epson E0C6S46 family
- TODO:
- - OSC3
- - K input interrupts
- - finish i/o ports
- - serial interface
- - buzzer envelope addition
- - add mask options for ports (eg. buzzer on output port R4x is optional)
+E0C6S46: 6144x12 ROM, 640x4 RAM, 2*80x4 VRAM, LCD has 16 commons and 40 segments
+E0C6S48: 8192x12 ROM, 768x4 RAM, 2*102x4 VRAM, LCD has 16 commons and 51 segments
+
+TODO:
+- finish i/o ports
+- serial interface
+- buzzer envelope addition
+- what happens if OSC3 is selected while OSCC (bit 2) is low?
+- K input interrupt can trigger if input is active while writing to the mask register
+- add mask options for ports (eg. buzzer on output port R4x is optional)
*/
@@ -28,36 +30,59 @@ enum
IRQREG_INPUT1
};
+// device definitions
DEFINE_DEVICE_TYPE(E0C6S46, e0c6s46_device, "e0c6s46", "Seiko Epson E0C6S46")
+DEFINE_DEVICE_TYPE(E0C6S48, e0c6s48_device, "e0c6s48", "Seiko Epson E0C6S48")
// internal memory maps
-void e0c6s46_device::e0c6s46_program(address_map &map)
+void e0c6s46_device::program_map(address_map &map)
{
map(0x0000, 0x17ff).rom();
}
+void e0c6s48_device::program_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+}
-void e0c6s46_device::e0c6s46_data(address_map &map)
+void e0c6s46_device::data_map(address_map &map)
{
map(0x0000, 0x027f).ram();
- map(0x0e00, 0x0e4f).ram().share("vram1");
- map(0x0e80, 0x0ecf).ram().share("vram2");
+ map(0x0e00, 0x0e4f).ram().share(m_vram[0]);
+ map(0x0e80, 0x0ecf).ram().share(m_vram[1]);
map(0x0f00, 0x0f7f).rw(FUNC(e0c6s46_device::io_r), FUNC(e0c6s46_device::io_w));
}
+void e0c6s48_device::data_map(address_map &map)
+{
+ map(0x0000, 0x02ff).ram();
+ map(0x0e00, 0x0e65).ram().share(m_vram[0]);
+ map(0x0e80, 0x0ee5).ram().share(m_vram[1]);
+ map(0x0f00, 0x0f7f).rw(FUNC(e0c6s48_device::io_r), FUNC(e0c6s48_device::io_w));
+}
-// device definitions
-e0c6s46_device::e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
- e0c6200_cpu_device(mconfig, E0C6S46, tag, owner, clock, address_map_constructor(FUNC(e0c6s46_device::e0c6s46_program), this), address_map_constructor(FUNC(e0c6s46_device::e0c6s46_data), this)),
- m_vram1(*this, "vram1"),
- m_vram2(*this, "vram2"),
- m_pixel_update_cb(*this),
+
+// constructor
+e0c6s46_device::e0c6s46_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor program, address_map_constructor data) :
+ e0c6200_cpu_device(mconfig, type, tag, owner, clock, program, data),
+ m_vram(*this, "vram%u", 1U),
+ m_write_segs(*this),
+ m_write_contrast(*this),
+ m_pixel_cb(*this),
m_write_r(*this),
m_read_p(*this, 0),
- m_write_p(*this)
+ m_write_p(*this),
+ m_osc3(0)
{ }
+e0c6s46_device::e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
+ e0c6s46_device(mconfig, E0C6S46, tag, owner, clock, address_map_constructor(FUNC(e0c6s46_device::program_map), this), address_map_constructor(FUNC(e0c6s46_device::data_map), this))
+{ }
+
+e0c6s48_device::e0c6s48_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
+ e0c6s46_device(mconfig, E0C6S48, tag, owner, clock, address_map_constructor(FUNC(e0c6s48_device::program_map), this), address_map_constructor(FUNC(e0c6s48_device::data_map), this))
+{ }
//-------------------------------------------------
@@ -68,15 +93,24 @@ void e0c6s46_device::device_start()
{
e0c6200_cpu_device::device_start();
- m_pixel_update_cb.resolve();
+ // misc init
+ m_osc1 = clock();
+ if (m_osc3 == 0)
+ m_osc3 = m_osc1;
- // create timers
m_core_256_handle = timer_alloc(FUNC(e0c6s46_device::core_256_cb), this);
- m_core_256_handle->adjust(attotime::from_ticks(64, unscaled_clock()));
+ m_core_256_handle->adjust(attotime::from_ticks(64, m_osc1));
m_prgtimer_handle = timer_alloc(FUNC(e0c6s46_device::prgtimer_cb), this);
- m_prgtimer_handle->adjust(attotime::never);
m_buzzer_handle = timer_alloc(FUNC(e0c6s46_device::buzzer_cb), this);
- m_buzzer_handle->adjust(attotime::never);
+ m_osc_change = timer_alloc(FUNC(e0c6s46_device::osc_change), this);
+ m_lcd_driver = timer_alloc(FUNC(e0c6s46_device::lcd_driver_cb), this);
+ m_lcd_driver->adjust(attotime::from_ticks(1024, m_osc1));
+
+ m_pixel_cb.resolve();
+
+ const u32 render_buf_size = m_vram[0].bytes() * 2 * 4;
+ m_render_buf = make_unique_clear(render_buf_size);
+ save_pointer(NAME(m_render_buf), render_buf_size);
// zerofill
memset(m_port_r, 0x0, sizeof(m_port_r));
@@ -195,6 +229,8 @@ void e0c6s46_device::device_reset()
m_data->write_byte(0xf7d, 0x0);
m_data->write_byte(0xf7e, 0x0);
+ m_write_contrast(m_lcd_contrast);
+
// reset ports
for (int i = 0; i < 5; i++)
write_r(i, m_port_r[i]);
@@ -212,9 +248,9 @@ void e0c6s46_device::execute_one()
{
// E0C6S46 has no support for SLP opcode
if (m_op == 0xff9)
- return;
-
- e0c6200_cpu_device::execute_one();
+ op_illegal();
+ else
+ e0c6200_cpu_device::execute_one();
}
@@ -268,7 +304,17 @@ void e0c6s46_device::execute_set_input(int line, int state)
int port = line >> 2 & 1;
u8 bit = 1 << (line & 3);
+ u8 prev = m_port_k[port];
m_port_k[port] = (m_port_k[port] & ~bit) | (state ? bit : 0);
+
+ // set interrupt on falling/rising edge of input
+ u8 dfk = (port == 0) ? m_dfk0 : 0xf;
+ u8 edge = ~(prev ^ dfk) & (m_port_k[port] ^ dfk) & bit;
+ if (m_irqmask[IRQREG_INPUT0 + port] & edge)
+ {
+ m_irqflag[IRQREG_INPUT0 + port] |= edge;
+ m_possible_irq = true;
+ }
}
@@ -353,7 +399,7 @@ TIMER_CALLBACK_MEMBER(e0c6s46_device::core_256_cb)
// clock-timer, stopwatch timer, and some features of the buzzer all run
// from the same internal 256hz timer (64 ticks high+low at default clock of 32768hz)
m_256_src_pulse ^= 1;
- m_core_256_handle->adjust(attotime::from_ticks(64, unscaled_clock()));
+ m_core_256_handle->adjust(attotime::from_ticks(64, m_osc1));
// clock stopwatch on falling edge of pulse+on
m_swl_cur_pulse = m_256_src_pulse | (m_stopwatch_on ^ 1);
@@ -370,6 +416,12 @@ TIMER_CALLBACK_MEMBER(e0c6s46_device::core_256_cb)
clock_clktimer();
}
+TIMER_CALLBACK_MEMBER(e0c6s46_device::osc_change)
+{
+ // set MCU instruction clock on CLKCHG change
+ set_clock((m_osc & 8) ? m_osc3 : m_osc1);
+}
+
// clock-timer
@@ -463,7 +515,7 @@ bool e0c6s46_device::prgtimer_reset_prescaler()
// only 2 to 7 are clock dividers
u8 sel = m_prgtimer_select & 7;
if (sel >= 2)
- m_prgtimer_handle->adjust(attotime::from_ticks(2 << (sel ^ 7), unscaled_clock()));
+ m_prgtimer_handle->adjust(attotime::from_ticks(2 << (sel ^ 7), m_osc1));
return (sel >= 2);
}
@@ -501,7 +553,7 @@ void e0c6s46_device::schedule_buzzer()
high -= m_bz_duty_ratio;
low -= high;
- m_buzzer_handle->adjust(attotime::from_ticks(m_bz_pulse ? high : low, mul * unscaled_clock()));
+ m_buzzer_handle->adjust(attotime::from_ticks(m_bz_pulse ? high : low, mul * m_osc1));
}
TIMER_CALLBACK_MEMBER(e0c6s46_device::buzzer_cb)
@@ -545,13 +597,11 @@ void e0c6s46_device::clock_bz_1shot()
// LCD Driver
//-------------------------------------------------
-u32 e0c6s46_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+TIMER_CALLBACK_MEMBER(e0c6s46_device::lcd_driver_cb)
{
- // call this 32 times per second (osc1/1024: 32hz at default clock of 32768hz)
+ // this gets called 32 times per second (osc1/1024: 32hz at default clock of 32768hz)
for (int bank = 0; bank < 2; bank++)
{
- const u8* vram = bank ? m_vram2 : m_vram1;
-
// determine operating mode
bool lcd_on = false;
int pixel = 0;
@@ -563,25 +613,47 @@ u32 e0c6s46_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
lcd_on = true;
// draw pixels
- for (int offset = 0; offset < 0x50; offset++)
+ for (int offset = 0; offset < m_vram[0].bytes(); offset++)
{
for (int c = 0; c < 4; c++)
{
if (lcd_on)
- pixel = vram[offset] >> c & 1;
+ pixel = m_vram[bank][offset] >> c & 1;
// 16 COM(common) pins, 40 SEG(segment) pins
int seg = offset / 2;
int com = bank * 8 + (offset & 1) * 4 + c;
- if (!m_pixel_update_cb.isnull())
- m_pixel_update_cb(bitmap, cliprect, m_lcd_contrast, seg, com, pixel);
- else if (cliprect.contains(seg, com))
- bitmap.pix(com, seg) = pixel;
+ const u8 width = m_vram[0].bytes() * 4 / 8;
+ m_render_buf[com * width + seg] = pixel;
+ m_write_segs(seg << 4 | com, pixel);
}
}
}
+ m_lcd_driver->adjust(attotime::from_ticks(1024, m_osc1));
+}
+
+u32 e0c6s46_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ const u8 *src = lcd_buffer();
+ const u8 width = m_vram[0].bytes() * 4 / 8;
+
+ for (int x = 0; x < width; x++)
+ {
+ for (int y = 0; y < 16; y++)
+ {
+ int dx = x;
+ int dy = y;
+
+ if (!m_pixel_cb.isnull())
+ m_pixel_cb(dx, dy);
+
+ if (cliprect.contains(dx, dy))
+ bitmap.pix(dy, dx) = src[y * width + x];
+ }
+ }
+
return 0;
}
@@ -745,8 +817,13 @@ void e0c6s46_device::io_w(offs_t offset, u8 data)
// d0,d1: CPU operating voltage
// d2: OSC3 on (high freq)
// d3: clock source OSC1 or OSC3
- if (data & 8)
- logerror("io_w selected OSC3! PC=$%04X\n", m_prev_pc);
+ if ((m_osc ^ data) & 8)
+ {
+ if (m_osc1 == m_osc3)
+ logerror("io_w unhandled OSC change, PC=$%04X\n", m_prev_pc);
+ else
+ m_osc_change->adjust(attotime::zero);
+ }
m_osc = data;
break;
@@ -760,6 +837,7 @@ void e0c6s46_device::io_w(offs_t offset, u8 data)
case 0x72:
// contrast adjustment (0=light, 15=dark)
m_lcd_contrast = data;
+ m_write_contrast(data);
break;
// SVD circuit (supply voltage detection)
diff --git a/src/devices/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h
index 3f1e09e6c9e3f..e0b7148423e40 100644
--- a/src/devices/cpu/e0c6200/e0c6s46.h
+++ b/src/devices/cpu/e0c6200/e0c6s46.h
@@ -2,7 +2,7 @@
// copyright-holders:hap
/*
- Seiko Epson E0C6S46 MCU
+ Seiko Epson E0C6S46 family
*/
@@ -11,6 +11,19 @@
#include "e0c6200.h"
+// for the 2 K input ports, use set_input_line(line, state)
+enum
+{
+ E0C6S46_LINE_K00 = 0,
+ E0C6S46_LINE_K01,
+ E0C6S46_LINE_K02,
+ E0C6S46_LINE_K03,
+ E0C6S46_LINE_K10,
+ E0C6S46_LINE_K11,
+ E0C6S46_LINE_K12,
+ E0C6S46_LINE_K13
+};
+
enum
{
E0C6S46_PORT_R0X = 0,
@@ -28,28 +41,13 @@ enum
E0C6S46_PORT_P3X
};
-// for the 2 K input ports, use set_input_line(line, state)
-enum
-{
- E0C6S46_LINE_K00 = 0,
- E0C6S46_LINE_K01,
- E0C6S46_LINE_K02,
- E0C6S46_LINE_K03,
- E0C6S46_LINE_K10,
- E0C6S46_LINE_K11,
- E0C6S46_LINE_K12,
- E0C6S46_LINE_K13
-};
-
-
-// lcd driver
-#define E0C6S46_PIXEL_UPDATE(name) void name(bitmap_ind16 &bitmap, const rectangle &cliprect, int contrast, int seg, int com, int state)
+// no pinout diagram here, refer to the manual
class e0c6s46_device : public e0c6200_cpu_device
{
public:
- typedef device_delegate pixel_update_delegate;
+ using pixel_delegate = device_delegate;
e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
@@ -60,14 +58,24 @@ class e0c6s46_device : public e0c6200_cpu_device
template auto read_p() { return m_read_p[Port].bind(); }
template auto write_p() { return m_write_p[Port].bind(); }
- template void set_pixel_update_cb(T &&... args) { m_pixel_update_cb.set(std::forward(args)...); }
+ // LCD segment outputs: COM0-COM15 as a0-a3, SEG0-SEGx as a4-a10
+ auto write_segs() { return m_write_segs.bind(); }
- u8 io_r(offs_t offset);
- void io_w(offs_t offset, u8 data);
+ // LCD contrast (adjusts VL pins overall voltage level)
+ auto write_contrast() { return m_write_contrast.bind(); }
+ // screen update (optional)
+ const u8 *lcd_buffer() { return &m_render_buf[0]; } // get intermediate LCD pixel buffer
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ template void set_pixel_callback(T &&... args) { m_pixel_cb.set(std::forward(args)...); } // transform pixel x/y
+
+ // OSC3 (set fast oscillator, via resistor)
+ void set_osc3(u32 osc) { m_osc3 = osc; }
+
protected:
+ e0c6s46_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor program, address_map_constructor data);
+
// device-level overrides
virtual void device_start() override ATTR_COLD;
virtual void device_reset() override ATTR_COLD;
@@ -77,21 +85,31 @@ class e0c6s46_device : public e0c6200_cpu_device
virtual void execute_one() override;
virtual bool check_interrupt() override;
- void e0c6s46_data(address_map &map) ATTR_COLD;
- void e0c6s46_program(address_map &map) ATTR_COLD;
+ u8 io_r(offs_t offset);
+ void io_w(offs_t offset, u8 data);
+
+ required_shared_ptr_array m_vram;
private:
- required_shared_ptr m_vram1;
- required_shared_ptr m_vram2;
+ void program_map(address_map &map) ATTR_COLD;
+ void data_map(address_map &map) ATTR_COLD;
u8 m_irqflag[6];
u8 m_irqmask[6];
u8 m_osc;
u8 m_svd;
+ // lcd driver
u8 m_lcd_control;
u8 m_lcd_contrast;
- pixel_update_delegate m_pixel_update_cb;
+ devcb_write8 m_write_segs;
+ devcb_write8 m_write_contrast;
+
+ emu_timer *m_lcd_driver;
+ TIMER_CALLBACK_MEMBER(lcd_driver_cb);
+
+ std::unique_ptr m_render_buf;
+ pixel_delegate m_pixel_cb;
// i/o ports
devcb_write8::array<5> m_write_r;
@@ -151,9 +169,25 @@ class e0c6s46_device : public e0c6200_cpu_device
void schedule_buzzer();
void reset_buzzer();
void clock_bz_1shot();
+
+ u32 m_osc1;
+ u32 m_osc3;
+ emu_timer *m_osc_change;
+ TIMER_CALLBACK_MEMBER(osc_change);
+};
+
+class e0c6s48_device : public e0c6s46_device
+{
+public:
+ e0c6s48_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+private:
+ void program_map(address_map &map) ATTR_COLD;
+ void data_map(address_map &map) ATTR_COLD;
};
DECLARE_DEVICE_TYPE(E0C6S46, e0c6s46_device)
+DECLARE_DEVICE_TYPE(E0C6S48, e0c6s48_device)
#endif // MAME_CPU_E0C6200_E0C6S46_H
diff --git a/src/devices/cpu/i86/i286.cpp b/src/devices/cpu/i86/i286.cpp
index b18abd01f8920..bfe4dc7c72831 100644
--- a/src/devices/cpu/i86/i286.cpp
+++ b/src/devices/cpu/i86/i286.cpp
@@ -384,21 +384,16 @@ void i80286_cpu_device::execute_set_input(int inptnum, int state)
{
if(inptnum == INPUT_LINE_NMI)
{
- if(m_nmi_state == state)
- {
- return;
- }
- m_nmi_state = state;
- if(state != CLEAR_LINE)
+ if(!m_nmi_state && state)
{
m_pending_irq |= NMI_IRQ;
}
+ m_nmi_state = state;
}
else if(inptnum == INPUT_LINE_A20)
m_amask = m_a20_callback(state);
else
{
- m_irq_state = state;
if(state == CLEAR_LINE)
{
m_pending_irq &= ~INT_IRQ;
@@ -760,7 +755,7 @@ void i80286_cpu_device::code_descriptor(uint16_t selector, uint16_t offset, int
throw TRAP(FAULT_GP, IDXTBL(selector));
if(!PRES(r))
- throw TRAP(FAULT_NP, IDXTBL(selector)); // this order is important
+ throw TRAP(FAULT_NP, IDXTBL(selector)); // this order is important
if(offset > LIMIT(desc))
throw TRAP(FAULT_GP, 0);
@@ -774,7 +769,8 @@ void i80286_cpu_device::code_descriptor(uint16_t selector, uint16_t offset, int
m_prev_ip = m_ip = offset;
}
else
- { // systemdescriptor
+ {
+ // systemdescriptor
uint16_t gatesel = GATESEL(desc);
if(!gate)
diff --git a/src/devices/cpu/i86/i86.cpp b/src/devices/cpu/i86/i86.cpp
index 55f6de6b45832..9d6ca4cf384e8 100644
--- a/src/devices/cpu/i86/i86.cpp
+++ b/src/devices/cpu/i86/i86.cpp
@@ -367,7 +367,6 @@ i8086_common_cpu_device::i8086_common_cpu_device(const machine_config &mconfig,
, m_int_vector(0)
, m_pending_irq(0)
, m_nmi_state(0)
- , m_irq_state(0)
, m_test_state(1)
, m_pc(0)
, m_lock(false)
@@ -489,7 +488,6 @@ void i8086_common_cpu_device::device_start()
save_item(NAME(m_int_vector));
save_item(NAME(m_pending_irq));
save_item(NAME(m_nmi_state));
- save_item(NAME(m_irq_state));
save_item(NAME(m_AuxVal));
save_item(NAME(m_OverVal));
save_item(NAME(m_ZeroVal));
@@ -555,9 +553,7 @@ void i8086_common_cpu_device::device_reset()
m_NT = 1; // 8086 NT always 1
m_MF = 1; // 8086 MF always 1, 80286 always 0
m_int_vector = 0;
- m_pending_irq = 0;
- m_nmi_state = 0;
- m_irq_state = 0;
+ m_pending_irq &= INT_IRQ;
m_no_interrupt = 0;
m_fire_trap = 0;
m_prefix_seg = 0;
@@ -577,7 +573,7 @@ void i8086_common_cpu_device::device_reset()
void i8086_common_cpu_device::interrupt(int int_num, int trap)
{
- PUSH( CompressFlags() );
+ PUSH(CompressFlags());
m_TF = m_IF = 0;
if (int_num == -1)
@@ -599,15 +595,11 @@ void i8086_common_cpu_device::execute_set_input( int inptnum, int state )
{
if (inptnum == INPUT_LINE_NMI)
{
- if ( m_nmi_state == state )
- {
- return;
- }
- m_nmi_state = state;
- if (state != CLEAR_LINE)
+ if (!m_nmi_state && state)
{
m_pending_irq |= NMI_IRQ;
}
+ m_nmi_state = state;
}
else if (inptnum == INPUT_LINE_TEST)
{
@@ -615,7 +607,6 @@ void i8086_common_cpu_device::execute_set_input( int inptnum, int state )
}
else
{
- m_irq_state = state;
if (state == CLEAR_LINE)
{
m_pending_irq &= ~INT_IRQ;
diff --git a/src/devices/cpu/i86/i86.h b/src/devices/cpu/i86/i86.h
index 5f67265638ea9..3ceb94f672d29 100644
--- a/src/devices/cpu/i86/i86.h
+++ b/src/devices/cpu/i86/i86.h
@@ -290,7 +290,6 @@ class i8086_common_cpu_device : public cpu_device, public i386_disassembler::con
uint32_t m_int_vector;
uint32_t m_pending_irq;
uint32_t m_nmi_state;
- uint32_t m_irq_state;
uint8_t m_no_interrupt;
uint8_t m_fire_trap;
uint8_t m_test_state;
diff --git a/src/devices/cpu/nec/v25.cpp b/src/devices/cpu/nec/v25.cpp
index 40dc190fa31ed..ee4f188617069 100644
--- a/src/devices/cpu/nec/v25.cpp
+++ b/src/devices/cpu/nec/v25.cpp
@@ -496,8 +496,8 @@ void v25_common_device::dma_process()
uint8_t dmamode = BIT(m_dmam[m_dma_channel], 5, 3);
bool w = BIT(m_dmam[m_dma_channel], 4);
- uint32_t saddr = (BIT(dmamode, 0) ? 0 : (uint32_t(sarh_darh) & 0xff00) << 4) + sar;
- uint32_t daddr = (BIT(dmamode, 1) ? 0 : (uint32_t(sarh_darh) & 0x00ff) << 12) + dar;
+ uint32_t saddr = ((uint32_t(sarh_darh) & 0xff00) << 4) + sar;
+ uint32_t daddr = ((uint32_t(sarh_darh) & 0x00ff) << 12) + dar;
switch (dmamode & 3)
{
diff --git a/src/devices/cpu/upd777/upd777.cpp b/src/devices/cpu/upd777/upd777.cpp
index fda5e638bb4b0..d915c031b8745 100644
--- a/src/devices/cpu/upd777/upd777.cpp
+++ b/src/devices/cpu/upd777/upd777.cpp
@@ -60,7 +60,7 @@ void upd777_cpu_device::internal_data_map(address_map &map)
// 00 yyyyyyp (y = ypos, p = PRIO)
// 01 xxxxxxx (x = xpos)
// 02 ttttttt (t = pattern)
- // 03 YYYRGBS (Y = , RGB = color, S=ySUB)
+ // 03 YYYRGBS (Y = , RGB = color, S=ySUB)
map(0x00, 0x7f).ram().share("datamem");
}
@@ -254,7 +254,7 @@ inline void upd777_cpu_device::set_frs(u8 frs) { m_frs = frs & 0x7f; }
inline void upd777_cpu_device::set_fls(u8 fls) { m_fls = fls & 0x7f; }
// MODE is a 7-bit register with the following format
-// 6543210
+// 6543210
// rbhpRGB (r = reverberate sound effect, b = brightness, h = hue, p = black/prio, RGB = color)
inline void upd777_cpu_device::set_mode(u8 mode) { m_mode = mode & 0x7f; }
@@ -517,7 +517,7 @@ void upd777_cpu_device::do_op()
{
if (!non)
{
- if ((srcreg1 & srcreg2) == 0) // skip if (x·y) makes zero, N->L[2:1]
+ if ((srcreg1 & srcreg2) == 0) // skip if (x·y) makes zero, N->L[2:1]
m_skip = 1;
}
else
@@ -569,7 +569,7 @@ void upd777_cpu_device::do_op()
}
else if ((inst & 0b1111'1010'0000) == 0b0011'0010'0000)
{
- // 0b0011'0r1R'oonn (where r = reg1, R = reg2, o = optype, and n = next l value)
+ // 0b0011'0r1R'oonn (where r = reg1, R = reg2, o = optype, and n = next l value)
// 320 AND A1[7:1] and A1[7:1], store to A1[7:1], N->L[2:1]
// 324 Add A1[7:1] and A1[7:1], store to A1[7:1], N->L[2:1]
// 328 OR A1[7:1] and A1[7:1], store to A1[7:1], N->L[2:1]
@@ -606,7 +606,7 @@ void upd777_cpu_device::do_op()
src1 = src1 + src2;
// not in this case?
//if (src1 & 0x80)
- // m_skip = 1;
+ // m_skip = 1;
break;
}
case 2: // OR
@@ -719,7 +719,7 @@ void upd777_cpu_device::do_op()
}
else if ((inst & 0b1111'1100'0010) == 0b0100'0100'0000)
{
- // 0b0100'01dg'ks0n (where d = DISP, G = GPE, K = KIE, S = SME, n = A11)
+ // 0b0100'01dg'ks0n (where d = DISP, G = GPE, K = KIE, S = SME, n = A11)
// 440 Set D to DISP, G to GPE, K to KIE, S to SME, N->A[11]
const int d = (inst >> 5) & 0x1;
const int g = (inst >> 4) & 0x1;
@@ -1172,7 +1172,7 @@ uint32_t upd777_cpu_device::screen_update(screen_device &screen, bitmap_ind16 &b
// 0x68-0x6f are 'Y Repeat' (7x7)
// 0x70-0x77 are 'XY Repeat' (8x7)
// 0x78-0x7f are 'X Repeat' (8x7)
-//
+//
// NOTE, sprite patterns *7 and *f are unused so documentation expresses these ranges as to 66, 6e etc. rather than 67 6f
//
// it isn't clear how the 'Bent' effect etc. is enabled, as clearly not all patterns in this range should use it?
diff --git a/src/devices/cpu/upd777/upd777dasm.cpp b/src/devices/cpu/upd777/upd777dasm.cpp
index fd7597b8bab39..5ebd92eb451d1 100644
--- a/src/devices/cpu/upd777/upd777dasm.cpp
+++ b/src/devices/cpu/upd777/upd777dasm.cpp
@@ -135,7 +135,7 @@ offs_t upd777_disassembler::disassemble(std::ostream &stream, offs_t pc, const u
else if (((inst & 0b1111'0000'0000) == 0b0010'0000'0000) && ((inst & 0b0000'0000'1100) != 0b0000'0000'0100))
{
// 0b0010'rrnR'oonn where rr = reg1 (A1, A2, M or H), n = invert condition, R = reg2 (A1 or A2) and oo = optype (only 0,2,3 are valid, no cases here for 1) nn = next l value
- //
+ //
// optype · (AND)
// 200 Skip if (A1[7:1]·A1[7:1]) makes zero, N->L[2:1]
// 220 Skip if (A1[7:1]·A1[7:1]) makes non zero, N->L[2:1]
@@ -499,6 +499,6 @@ offs_t upd777_disassembler::disassemble(std::ostream &stream, offs_t pc, const u
{
util::stream_format(stream, "%04x ", inst);
}
-
+
return 1;
}
diff --git a/src/devices/machine/akiko.cpp b/src/devices/machine/akiko.cpp
index 5ebe4603a0e63..be5d02c23c2f7 100644
--- a/src/devices/machine/akiko.cpp
+++ b/src/devices/machine/akiko.cpp
@@ -142,6 +142,7 @@ void akiko_device::device_start()
m_cdrom_toc = nullptr;
m_dma_timer = timer_alloc(FUNC(akiko_device::dma_proc), this);
m_frame_timer = timer_alloc(FUNC(akiko_device::frame_proc), this);
+ m_toc_timer = timer_alloc(FUNC(akiko_device::cd_delayed_cmd), this);
}
//-------------------------------------------------
@@ -694,8 +695,7 @@ void akiko_device::update_cdrom()
{
m_cdrom_cmd_start = (m_cdrom_cmd_start + 3) & 0xff;
- machine().scheduler().timer_set( attotime::from_msec(1), timer_expired_delegate( FUNC( akiko_device::cd_delayed_cmd ), this ), resp[0] );
-
+ m_toc_timer->adjust(attotime::from_msec(1), resp[0] );
break;
}
else if ( cmd == 0x06 ) /* read subq */
diff --git a/src/devices/machine/akiko.h b/src/devices/machine/akiko.h
index 1d1a61254ca27..73a3b36b09452 100644
--- a/src/devices/machine/akiko.h
+++ b/src/devices/machine/akiko.h
@@ -92,6 +92,7 @@ class akiko_device : public device_t
emu_timer *m_dma_timer;
emu_timer *m_frame_timer;
+ emu_timer *m_toc_timer;
void nvram_write(uint32_t data);
uint32_t nvram_read();
diff --git a/src/devices/machine/amigafdc.cpp b/src/devices/machine/amigafdc.cpp
index 662a80dffe4b5..53ec7a5718b19 100644
--- a/src/devices/machine/amigafdc.cpp
+++ b/src/devices/machine/amigafdc.cpp
@@ -511,7 +511,9 @@ void amiga_fdc_device::ciaaprb_w(uint8_t data)
floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&amiga_fdc_device::index_callback, this));
}
- if(floppy) {
+ const bool floppy_inserted = floppy && floppy->exists();
+
+ if(floppy_inserted) {
floppy->ss_w(!(BIT(data, 2)));
floppy->dir_w(BIT(data, 1));
floppy->stp_w(BIT(data, 0));
@@ -519,7 +521,7 @@ void amiga_fdc_device::ciaaprb_w(uint8_t data)
m_fdc_led = BIT(data, 7); // LED directly connected to FDC motor
}
- if(floppy) {
+ if(floppy_inserted) {
if(cur_live.state == IDLE)
live_start();
} else
diff --git a/src/devices/video/pc_vga_cirrus.cpp b/src/devices/video/pc_vga_cirrus.cpp
index 475018b6a8797..04af15eb8ce5c 100644
--- a/src/devices/video/pc_vga_cirrus.cpp
+++ b/src/devices/video/pc_vga_cirrus.cpp
@@ -1190,7 +1190,7 @@ uint8_t cirrus_gd5428_vga_device::mem_r(offs_t offset)
// FIXME: workaround crash behaviour in picasso2
// it will otherwise provide an offset of 0x1fxxxx in the gc_locked below
- // causing a crash during adapter init
+ // causing a crash during adapter init
if(svga.rgb8_en || svga.rgb15_en || svga.rgb16_en || svga.rgb24_en)
{
return svga_device::mem_linear_r((offset & 0xffff) + bank * 0x10000);
diff --git a/src/emu/layout/teletex800.lay b/src/emu/layout/teletex800.lay
index b34f144cb5543..381c48ef34f80 100644
--- a/src/emu/layout/teletex800.lay
+++ b/src/emu/layout/teletex800.lay
@@ -9,11 +9,11 @@ license:CC0-1.0
-
+
-
+
@@ -21,8 +21,8 @@ license:CC0-1.0
-
-
+
+
@@ -38,38 +38,38 @@ license:CC0-1.0
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
+
+
+
@@ -151,17 +151,17 @@ license:CC0-1.0
-
+
-
+
-
+
diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp
index ec5ccb03e8e3d..53455d8cc5fc7 100644
--- a/src/frontend/mame/luaengine.cpp
+++ b/src/frontend/mame/luaengine.cpp
@@ -1467,12 +1467,12 @@ void lua_engine::initialize()
{
switch (m.phase())
{
- case machine_phase::PREINIT: return "preinit";
- case machine_phase::INIT: return "init";
- case machine_phase::RESET: return "reset";
- case machine_phase::RUNNING: return "running";
- case machine_phase::EXIT: return "exit";
- default: return "";
+ case machine_phase::PREINIT: return "preinit";
+ case machine_phase::INIT: return "init";
+ case machine_phase::RESET: return "reset";
+ case machine_phase::RUNNING: return "running";
+ case machine_phase::EXIT: return "exit";
+ default: return "";
}
});
diff --git a/src/lib/formats/fs_vtech.cpp b/src/lib/formats/fs_vtech.cpp
index 27e7f93a0566e..6b4145184376b 100644
--- a/src/lib/formats/fs_vtech.cpp
+++ b/src/lib/formats/fs_vtech.cpp
@@ -19,7 +19,7 @@ namespace fs { const vtech_image VTECH; }
// Filesystem has no subdirectories.
//
// Track 0 sectors 0-14 have the file names. 16 bytes/entry
-// offset 0 : File type 'T' (basic) or 'B' (binary)
+// offset 0 : File type 'T' (basic), 'B' (binary), or some other letter (application-specific)
// offset 1 : 0x3a
// offset 2-9: File name
// offset a : Track number of first file sector
@@ -114,7 +114,9 @@ std::vector vtech_image::file_meta_description() const
res.emplace_back(meta_description(meta_name::name, "", false, [](const meta_value &m) { return m.as_string().size() <= 8; }, "File name, 8 chars"));
res.emplace_back(meta_description(meta_name::loading_address, 0x7ae9, false, [](const meta_value &m) { return m.as_number() < 0x10000; }, "Loading address of the file"));
res.emplace_back(meta_description(meta_name::length, 0, true, nullptr, "Size of the file in bytes"));
- res.emplace_back(meta_description(meta_name::basic, true, true, nullptr, "Basic file"));
+ res.emplace_back(meta_description(meta_name::file_type, "T", true,
+ [](const meta_value &m) { return m.as_string().size() == 1 && m.as_string()[0] >= 'A' && m.as_string()[0] <= 'Z'; },
+ "File type (e.g. T = text, B = binary)"));
return res;
}
@@ -143,9 +145,9 @@ meta_data vtech_impl::file_metadata(const u8 *entry)
meta_data res;
res.set(meta_name::name, trim_end_spaces(rstr(entry+2, 8)));
- res.set(meta_name::basic, entry[0] == 'T');
+ res.set(meta_name::file_type, std::string{ char(entry[0]) });
res.set(meta_name::loading_address, get_u16le(entry + 0xc));
- res.set(meta_name::length, ((get_u16le(entry + 0xe) - get_u16le(entry + 0xc) + 1) & 0xffff));
+ res.set(meta_name::length, (get_u16le(entry + 0xe) - get_u16le(entry + 0xc)) & 0xffff);
return res;
}
@@ -157,12 +159,12 @@ std::tuple vtech_impl::file_find(std::string_view name)
for(u32 i = 0; i != 8; i ++) {
u32 off = i*16;
u8 type = bdir.r8(off);
- if(type != 'T' && type != 'B')
+ if(type < 'A' || type > 'Z')
continue;
if(bdir.r8(off+1) != ':')
continue;
if(trim_end_spaces(bdir.rstr(off+2, 8)) == name) {
- return std::make_tuple(bdir, i);
+ return std::make_tuple(bdir, off);
}
}
}
@@ -187,12 +189,12 @@ err_t vtech_impl::metadata_change(const std::vector &path, const me
return ERR_NOT_FOUND;
auto [bdir, off] = file_find(path[0]);
- if(!off)
+ if(off == 0xffffffff)
return ERR_NOT_FOUND;
u8 *entry = bdir.data() + off;
- if(meta.has(meta_name::basic))
- entry[0x0] = meta.get_flag(meta_name::basic) ? 'T' : 'B';
+ if(meta.has(meta_name::file_type))
+ entry[0x0] = meta.get_string(meta_name::file_type)[0];
if(meta.has(meta_name::name)) {
std::string name = meta.get_string(meta_name::name);
name.resize(8, ' ');
@@ -224,7 +226,7 @@ std::pair> vtech_impl::directory_contents(const st
for(u32 i = 0; i != 8; i ++) {
u32 off = i*16;
u8 type = bdir.r8(off);
- if(type != 'T' && type != 'B')
+ if(type < 'A' || type > 'Z')
continue;
if(bdir.r8(off+1) != ':')
continue;
@@ -241,7 +243,7 @@ err_t vtech_impl::rename(const std::vector &opath, const std::vecto
return ERR_NOT_FOUND;
auto [bdir, off] = file_find(opath[0]);
- if(!off)
+ if(off == 0xffffffff)
return ERR_NOT_FOUND;
std::string name = npath[0];
@@ -272,13 +274,13 @@ err_t vtech_impl::file_create(const std::vector &path, const meta_d
std::string fname = meta.get_string(meta_name::name, "");
fname.resize(8, ' ');
- bdir.w8 (off+0x0, meta.get_flag(meta_name::basic, true) ? 'T' : 'B');
+ bdir.w8 (off+0x0, meta.get_string(meta_name::file_type, "T")[0]);
bdir.w8 (off+0x1, ':');
bdir.wstr(off+0x2, fname);
bdir.w8 (off+0xa, 0x00);
bdir.w8 (off+0xb, 0x00);
bdir.w16l(off+0xc, meta.get_number(meta_name::loading_address, 0x7ae9));
- bdir.w16l(off+0xe, bdir.r16l(off+0xc) - 1); // Size 0 initially
+ bdir.w16l(off+0xe, bdir.r16l(off+0xc)); // Size 0 initially
return ERR_OK;
}
}
@@ -301,7 +303,7 @@ std::pair> vtech_impl::file_read(const std::vector &path, const std::ve
u8 *entry = bdir.data() + off;
- u32 cur_len = ((get_u16le(entry + 0xe) - get_u16le(entry + 0xc) + 1) & 0xffff);
+ u32 cur_len = (get_u16le(entry + 0xe) - get_u16le(entry + 0xc)) & 0xffff;
u32 new_len = data.size();
if(new_len > 65535)
new_len = 65535;
@@ -370,7 +372,7 @@ err_t vtech_impl::file_write(const std::vector &path, const std::ve
dblk.w16l(126, 0);
}
- u16 end_address = (get_u16le(entry + 0xc) + data.size() - 1) & 0xffff;
+ u16 end_address = (get_u16le(entry + 0xc) + data.size()) & 0xffff;
put_u16le(entry + 0xe, end_address);
if(need_ns) {
entry[0xa] = blocks[0].first;
diff --git a/src/lib/formats/fsmeta.cpp b/src/lib/formats/fsmeta.cpp
index f3e91e706a0c4..3c731f21939ea 100644
--- a/src/lib/formats/fsmeta.cpp
+++ b/src/lib/formats/fsmeta.cpp
@@ -14,7 +14,6 @@ namespace fs {
const char *meta_data::entry_name(meta_name name)
{
switch(name) {
- case meta_name::basic: return "basic";
case meta_name::creation_date: return "creation_date";
case meta_name::length: return "length";
case meta_name::loading_address: return "loading_address";
diff --git a/src/lib/formats/fsmeta.h b/src/lib/formats/fsmeta.h
index 0f6baf2013334..ff0b505ab8bc8 100644
--- a/src/lib/formats/fsmeta.h
+++ b/src/lib/formats/fsmeta.h
@@ -21,7 +21,6 @@
namespace fs {
enum class meta_name {
- basic,
creation_date,
length,
loading_address,
diff --git a/src/lib/formats/vt_dsk.cpp b/src/lib/formats/vt_dsk.cpp
index 00284d2bd9e47..da7e450b67382 100644
--- a/src/lib/formats/vt_dsk.cpp
+++ b/src/lib/formats/vt_dsk.cpp
@@ -224,7 +224,7 @@ const char *vtech_dsk_format::description() const noexcept
const char *vtech_dsk_format::extensions() const noexcept
{
- return "dsk";
+ return "dsk,dvz";
}
int vtech_bin_format::identify(util::random_read &io, uint32_t form_factor, const std::vector &variants) const
diff --git a/src/mame/amiga/amiga.cpp b/src/mame/amiga/amiga.cpp
index 1f607a0ca9ab5..d908d262b102a 100644
--- a/src/mame/amiga/amiga.cpp
+++ b/src/mame/amiga/amiga.cpp
@@ -1704,6 +1704,7 @@ void amiga_state::amiga_base(machine_config &config)
SOFTWARE_LIST(config, "flop_list").set_original("amiga_flop");
SOFTWARE_LIST(config, "ocs_list").set_original("amigaocs_flop");
SOFTWARE_LIST(config, "demos_list").set_original("amiga_demos");
+ SOFTWARE_LIST(config, "amigacd_list").set_original("amiga_cd");
}
void a1000_state::a1000(machine_config &config)
@@ -2239,7 +2240,7 @@ void cd32_state::cd32(machine_config &config)
m_cia_0->sp_wr_callback().set_nop();
SOFTWARE_LIST(config, "cd32_list").set_original("cd32");
- SOFTWARE_LIST(config, "cd_list").set_original("cdtv");
+ SOFTWARE_LIST(config, "cd_list").set_compatible("cdtv");
}
void cd32_state::cd32n(machine_config &config)
diff --git a/src/mame/amiga/amiga_m.cpp b/src/mame/amiga/amiga_m.cpp
index 6f5c074bb5332..0c1ecad4f6162 100644
--- a/src/mame/amiga/amiga_m.cpp
+++ b/src/mame/amiga/amiga_m.cpp
@@ -1285,7 +1285,7 @@ void amiga_state::bplcon0_w(u16 data)
if ((data & (BPLCON0_BPU0 | BPLCON0_BPU1 | BPLCON0_BPU2)) == (BPLCON0_BPU0 | BPLCON0_BPU1 | BPLCON0_BPU2))
{
/* planes go from 0 to 6, inclusive */
- popmessage( "bplcon0_w: setting up planes > 6, %04x", data );
+ popmessage( "bplcon0_w: setting up planes > 6, %04x (bug if not AGA SW)", data );
data &= ~BPLCON0_BPU0;
}
CUSTOM_REG(REG_BPLCON0) = data;
@@ -1387,7 +1387,8 @@ uint16_t amiga_state::custom_chip_r(offs_t offset)
return m_fdc->adkcon_r();
case REG_DSKDATR:
- popmessage("DSKDAT R");
+ if (!machine().side_effects_disabled())
+ popmessage("DSKDAT R");
break;
}
diff --git a/src/mame/amiga/amiga_v.cpp b/src/mame/amiga/amiga_v.cpp
index 8458feb38d613..411e0f015e62d 100644
--- a/src/mame/amiga/amiga_v.cpp
+++ b/src/mame/amiga/amiga_v.cpp
@@ -550,7 +550,7 @@ void amiga_state::render_scanline(bitmap_rgb32 &bitmap, int scanline)
for (int x = 0; x < (amiga_state::SCREEN_WIDTH / 2) + 10; x++)
{
int sprpix;
- const bool out_of_beam = x >= amiga_state::SCREEN_WIDTH / 2;
+ const bool out_of_beam = x >= amiga_state::SCREEN_WIDTH / 2;
/* time to execute the copper? */
if (x == next_copper_x)
@@ -602,10 +602,10 @@ void amiga_state::render_scanline(bitmap_rgb32 &bitmap, int scanline)
/* clear the target pixels to the background color as a starting point */
if (dst != nullptr && !out_of_beam)
- {
+ {
dst[x*2+0] =
dst[x*2+1] = m_palette->pen(CUSTOM_REG(REG_COLOR00));
- }
+ }
/* if we hit the first fetch pixel, reset the counters and latch the delays */
if (x == ddf_start_pixel)
diff --git a/src/mame/amiga/amigaaga.cpp b/src/mame/amiga/amigaaga.cpp
index 76b69ea25effa..d60dc1a5ba336 100644
--- a/src/mame/amiga/amigaaga.cpp
+++ b/src/mame/amiga/amigaaga.cpp
@@ -549,7 +549,7 @@ void amiga_state::aga_render_scanline(bitmap_rgb32 &bitmap, int scanline)
for (int x = 0; x < (amiga_state::SCREEN_WIDTH / 2) + offset_hack[bitplane_fmode]; x++)
{
int sprpix;
- const bool out_of_beam = x >= amiga_state::SCREEN_WIDTH / 2;
+ const bool out_of_beam = x >= amiga_state::SCREEN_WIDTH / 2;
/* time to execute the copper? */
if (x == next_copper_x)
diff --git a/src/mame/apple/apple2video.cpp b/src/mame/apple/apple2video.cpp
index c3a735b17abd6..8f9ee6c67bdfc 100644
--- a/src/mame/apple/apple2video.cpp
+++ b/src/mame/apple/apple2video.cpp
@@ -971,7 +971,7 @@ uint32_t a2_video_device::screen_update(screen_device &screen, bitmap_ind16 &bit
if (m_hires)
{
- if ((Model == model::IIE || Model == model::IIGS) && m_dhires && m_80col)
+ if ((Model == model::IIE || Model == model::IIGS) && m_dhires && m_80col && m_aux_ptr)
{
dhgr_update(screen, bitmap, cliprect, 0, text_start_row - 1);
}
@@ -982,7 +982,7 @@ uint32_t a2_video_device::screen_update(screen_device &screen, bitmap_ind16 &bit
}
else // lo-res
{
- if ((Model == model::IIE || Model == model::IIGS) && m_dhires && m_80col)
+ if ((Model == model::IIE || Model == model::IIGS) && m_dhires && m_80col && m_aux_ptr)
{
lores_update(screen, bitmap, cliprect, 0, text_start_row - 1);
}
diff --git a/src/mame/apple/dafb.cpp b/src/mame/apple/dafb.cpp
index 25ff56c2f4d59..0d0c7eba8ba2a 100644
--- a/src/mame/apple/dafb.cpp
+++ b/src/mame/apple/dafb.cpp
@@ -207,6 +207,7 @@ static INPUT_PORTS_START(monitor_config)
PORT_CONFSETTING(0x02, u8"Mac RGB Display (12\" 512\u00d7384)") // "Rubik" (modified IIgs AppleColor RGB)
PORT_CONFSETTING(0x03, u8"Mac Two-Page Display (B&W 21\" 1152\u00d7870)") // "2 Page"
PORT_CONFSETTING(0x06, u8"Mac Hi-Res Display (12-14\" 640\u00d7480)") // "High Res"
+ PORT_CONFSETTING(0x07, u8"No monitor, disable internal video") // No monitor connected
PORT_CONFSETTING(ext(0, 0, 0), "PAL Encoder (640\u00d7480, 768\u00d7576)")
PORT_CONFSETTING(ext(1, 1, 0), "NTSC Encoder (512\u00d7384, 640\u00d7480)")
PORT_CONFSETTING(ext(1, 1, 3), "640x480 VGA")
@@ -224,6 +225,7 @@ static INPUT_PORTS_START(monitor_config_noconv)
PORT_CONFSETTING(0x02, u8"Mac RGB Display (12\" 512\u00d7384)") // "Rubik" (modified IIgs AppleColor RGB)
PORT_CONFSETTING(0x03, u8"Mac Two-Page Display (B&W 21\" 1152\u00d7870)") // "2 Page"
PORT_CONFSETTING(0x06, u8"Mac Hi-Res Display (12-14\" 640\u00d7480)") // "High Res"
+ PORT_CONFSETTING(0x07, u8"No monitor, disable internal video") // No monitor connected
PORT_CONFSETTING(ext(1, 1, 3), "640x480 VGA")
PORT_CONFSETTING(ext(2, 3, 1), "832x624 16\" RGB") // "Goldfish" or "16 inch RGB"
PORT_CONFSETTING(ext(3, 2, 2), "1024\u00d7768 19\" RGB");
diff --git a/src/mame/atari/atarig1.h b/src/mame/atari/atarig1.h
index c9e5df83bae6f..43a8b627ea086 100644
--- a/src/mame/atari/atarig1.h
+++ b/src/mame/atari/atarig1.h
@@ -18,17 +18,18 @@
class atarig1_state : public atarigen_state
{
public:
- atarig1_state(const machine_config &mconfig, device_type type, const char *tag)
- : atarigen_state(mconfig, type, tag),
- m_slapstic(*this, "slapstic"),
- m_slapstic_bank(*this, "slapstic_bank"),
- m_jsa(*this, "jsa"),
- m_playfield_tilemap(*this, "playfield"),
- m_alpha_tilemap(*this, "alpha"),
- m_rle(*this, "rle"),
- m_adc(*this, "adc"),
- m_in1(*this, "IN1"),
- m_mo_command(*this, "mo_command") { }
+ atarig1_state(const machine_config &mconfig, device_type type, const char *tag) :
+ atarigen_state(mconfig, type, tag),
+ m_slapstic(*this, "slapstic"),
+ m_slapstic_bank(*this, "slapstic_bank"),
+ m_jsa(*this, "jsa"),
+ m_playfield_tilemap(*this, "playfield"),
+ m_alpha_tilemap(*this, "alpha"),
+ m_rle(*this, "rle"),
+ m_adc(*this, "adc"),
+ m_in1(*this, "IN1"),
+ m_mo_command(*this, "mo_command")
+ { }
void atarig1(machine_config &config);
void pfslap111(machine_config &config);
@@ -64,11 +65,11 @@ class atarig1_state : public atarigen_state
bool m_bslapstic_primed = false;
- uint8_t m_pfscroll_xoffset = 0;
- uint16_t m_current_control = 0;
- uint8_t m_playfield_tile_bank = 0;
- uint16_t m_playfield_xscroll = 0;
- uint16_t m_playfield_yscroll = 0;
+ uint8_t m_pfscroll_xoffset = 0;
+ uint16_t m_current_control = 0;
+ uint8_t m_playfield_tile_bank = 0;
+ uint16_t m_playfield_xscroll = 0;
+ uint16_t m_playfield_yscroll = 0;
void video_int_ack_w(uint16_t data = 0);
TIMER_DEVICE_CALLBACK_MEMBER(scanline_update);
diff --git a/src/mame/atari/flyball.cpp b/src/mame/atari/flyball.cpp
index 70aa8ea5993ea..c334896ea2c20 100644
--- a/src/mame/atari/flyball.cpp
+++ b/src/mame/atari/flyball.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Stefan Jokisch, Ivan Vangelista, Ryan Holtz
+// copyright-holders:Stefan Jokisch, Ryan Holtz
/***************************************************************************
Atari Flyball Driver
diff --git a/src/mame/atari/nl_flyball.cpp b/src/mame/atari/nl_flyball.cpp
index 416f55ca20574..86e020ba3aa7b 100644
--- a/src/mame/atari/nl_flyball.cpp
+++ b/src/mame/atari/nl_flyball.cpp
@@ -1,5 +1,5 @@
// license:CC0-1.0
-// copyright-holders:Ryan Holtz, Ivan Vangelista
+// copyright-holders:Ryan Holtz
//
// Netlist for Atari's Flyball
//
diff --git a/src/mame/atari/nl_flyball.h b/src/mame/atari/nl_flyball.h
index 816bb44852dc6..a3dbd4d82abd0 100644
--- a/src/mame/atari/nl_flyball.h
+++ b/src/mame/atari/nl_flyball.h
@@ -1,5 +1,5 @@
// license:CC0-1.0
-// copyright-holders:Ivan Vangelista, Ryan Holtz
+// copyright-holders:Ryan Holtz
#ifndef MAME_ATARI_NL_FLYBALL_H
#define MAME_ATARI_NL_FLYBALL_H
diff --git a/src/mame/bandai/tamag1.cpp b/src/mame/bandai/tamag1.cpp
deleted file mode 100644
index 36e9f7c47a1b7..0000000000000
--- a/src/mame/bandai/tamag1.cpp
+++ /dev/null
@@ -1,173 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:digshadow, Segher
-/*******************************************************************************
-
-Bandai Tamagotchi generation 1 hardware
-
-Hardware notes:
-- PCB label: TMG-M1
-- Seiko Epson E0C6S46 MCU under epoxy
-- 32*16 LCD screen + 8 custom segments
-- 1-bit sound
-
-TODO:
-- change to SVG screen
-- add the Mothra version that was recently dumped (has a E0C6S48)
-
-*******************************************************************************/
-
-#include "emu.h"
-
-#include "cpu/e0c6200/e0c6s46.h"
-#include "sound/spkrdev.h"
-
-#include "emupal.h"
-#include "screen.h"
-#include "speaker.h"
-
-#include "tama.lh"
-
-
-namespace {
-
-class tamag1_state : public driver_device
-{
-public:
- tamag1_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_out_x(*this, "%u.%u", 0U, 0U)
- { }
-
- void tama(machine_config &config);
-
- DECLARE_INPUT_CHANGED_MEMBER(input_changed);
-
-protected:
- virtual void machine_start() override ATTR_COLD;
-
-private:
- void tama_palette(palette_device &palette) const;
- E0C6S46_PIXEL_UPDATE(pixel_update);
-
- required_device m_maincpu;
- output_finder<16, 40> m_out_x;
-};
-
-void tamag1_state::machine_start()
-{
- m_out_x.resolve();
-}
-
-
-
-/*******************************************************************************
- Video
-*******************************************************************************/
-
-E0C6S46_PIXEL_UPDATE(tamag1_state::pixel_update)
-{
- // 16 COM(common) pins, 40 SEG(segment) pins from MCU, 32x16 LCD screen:
- static const int seg2x[0x28] =
- {
- 0, 1, 2, 3, 4, 5, 6, 7,
- 35,8, 9, 10,11,12,13,14,
- 15,34,33,32,31,30,29,28,
- 27,26,25,24,36,23,22,21,
- 20,19,18,17,16,37,38,39
- };
-
- int y = com, x = seg2x[seg];
- if (cliprect.contains(x, y))
- bitmap.pix(y, x) = state;
-
- // 2 rows of indicators:
- // above screen: 0:meal, 1:lamp, 2:play, 3:medicine
- // under screen: 4:bath, 5:scales, 6:shout, 7:attention
- // they are on pin SEG8(x=35) + COM0-3, pin SEG28(x=36) + COM12-15
-
- // output to y.x
- m_out_x[y][x] = state;
-}
-
-void tamag1_state::tama_palette(palette_device &palette) const
-{
- palette.set_pen_color(0, rgb_t(0xf1, 0xf0, 0xf9)); // background
- palette.set_pen_color(1, rgb_t(0x3c, 0x38, 0x38)); // lcd pixel
-}
-
-
-
-/*******************************************************************************
- Input Ports
-*******************************************************************************/
-
-INPUT_CHANGED_MEMBER(tamag1_state::input_changed)
-{
- // inputs are hooked up backwards here, because MCU input ports are all tied to its interrupt controller
- m_maincpu->set_input_line(param, newval ? ASSERT_LINE : CLEAR_LINE);
-}
-
-static INPUT_PORTS_START( tama )
- PORT_START("K0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K00)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K01)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K02)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
-
-
-
-/*******************************************************************************
- Machine Configs
-*******************************************************************************/
-
-void tamag1_state::tama(machine_config &config)
-{
- // basic machine hardware
- E0C6S46(config, m_maincpu, 32.768_kHz_XTAL);
- m_maincpu->set_pixel_update_cb(FUNC(tamag1_state::pixel_update));
- m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3);
-
- // video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(32.768_kHz_XTAL/1024);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40, 16);
- screen.set_visarea(0, 32-1, 0, 16-1);
- screen.set_screen_update("maincpu", FUNC(e0c6s46_device::screen_update));
- screen.set_palette("palette");
- config.set_default_layout(layout_tama);
-
- PALETTE(config, "palette", FUNC(tamag1_state::tama_palette), 2);
-
- // sound hardware
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-
-
-/*******************************************************************************
- ROM Definitions
-*******************************************************************************/
-
-ROM_START( tama )
- ROM_REGION( 0x3000, "maincpu", 0 )
- ROM_LOAD( "tama.bin", 0x0000, 0x3000, CRC(5c864cb1) SHA1(4b4979cf92dc9d2fb6d7295a38f209f3da144f72) )
-
- ROM_REGION( 0x3000, "maincpu:test", 0 )
- ROM_LOAD( "test.bin", 0x0000, 0x3000, CRC(4372220e) SHA1(6e13d015113e16198c0059b9d0c38d7027ae7324) ) // this rom is on the die too, test pin enables it?
-ROM_END
-
-} // anonymous namespace
-
-
-
-/*******************************************************************************
- Drivers
-*******************************************************************************/
-
-// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-SYST( 1997, tama, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (USA)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/dataeast/dec8.cpp b/src/mame/dataeast/dec8.cpp
index 7b7a02806f12a..22109ebfb1d1a 100644
--- a/src/mame/dataeast/dec8.cpp
+++ b/src/mame/dataeast/dec8.cpp
@@ -1205,7 +1205,7 @@ static INPUT_PORTS_START( ghostb )
PORT_START("DSW0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) // Tested on real hardware
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
- // 1-2 should be coinage.
+ // 1-2 should be coinage.
// PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2")
// PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
// PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
@@ -1752,7 +1752,7 @@ static const gfx_layout sr_sprites =
{ 16*8, 1+(16*8), 2+(16*8), 3+(16*8), 4+(16*8), 5+(16*8), 6+(16*8), 7+(16*8),
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,9*8,10*8,11*8,12*8,13*8,14*8,15*8 },
-// { 0*8, 2*8, 1*8, 3*8, 4*8, 6*8, 5*8, 7*8 ,8*8,10*8,9*8,11*8,12*8,14*8,13*8,15*8 }, bootleg decode
+// { 0*8, 2*8, 1*8, 3*8, 4*8, 6*8, 5*8, 7*8 ,8*8,10*8,9*8,11*8,12*8,14*8,13*8,15*8 }, bootleg decode
16*16
};
diff --git a/src/mame/dataeast/kchamp_v.cpp b/src/mame/dataeast/kchamp_v.cpp
index 27430241779c0..3096a4c70f42a 100644
--- a/src/mame/dataeast/kchamp_v.cpp
+++ b/src/mame/dataeast/kchamp_v.cpp
@@ -57,11 +57,11 @@ void kchamp_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
{
/* sprite format:
- Offset Encoding
- 0 YYYYYYYY
- 1 TTTTTTTT - tile#
- 2 FGGTCCCC - y flip, gfx bank, high bit of tile#, color
- 3 XXXXXXXX
+ Offset Encoding
+ 0 YYYYYYYY
+ 1 TTTTTTTT - tile#
+ 2 FGGTCCCC - y flip, gfx bank, high bit of tile#, color
+ 3 XXXXXXXX
*/
int attr = m_spriteram[offs + 2];
diff --git a/src/mame/dynax/ddenlovr.cpp b/src/mame/dynax/ddenlovr.cpp
index 81b897701ed9d..492214d6ab3db 100644
--- a/src/mame/dynax/ddenlovr.cpp
+++ b/src/mame/dynax/ddenlovr.cpp
@@ -124,6 +124,8 @@ Year + Game Board CPU Sound
#include "emu.h"
#include "dynax.h"
+#include "mjdipsw.h"
+
#include "mahjong.h"
#include "cpu/m68000/m68000.h"
diff --git a/src/mame/dynax/dynax.cpp b/src/mame/dynax/dynax.cpp
index e827513ffad79..71c3d5764dd3c 100644
--- a/src/mame/dynax/dynax.cpp
+++ b/src/mame/dynax/dynax.cpp
@@ -82,6 +82,8 @@ Year + Game Main Board Sub Board CPU Sound
#include "emu.h"
#include "dynax.h"
+#include "mjdipsw.h"
+
#include "mahjong.h"
#include "cpu/tlcs90/tlcs90.h"
@@ -1577,13 +1579,6 @@ INPUT_PORTS_END
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) /* Coin */ \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* Service */
-#define MAHJONG_ODDS_RATE(shift, loc) \
- PORT_DIPNAME( 0x03 << shift, 0x00 << shift, "Odds Rate" ) PORT_DIPLOCATION(loc) \
- PORT_DIPSETTING( 0x03 << shift, "1 2 4 8 12 16 24 32" ) \
- PORT_DIPSETTING( 0x00 << shift, "1 2 3 5 8 15 30 50" ) \
- PORT_DIPSETTING( 0x01 << shift, "1 2 3 5 10 25 50 100" ) \
- PORT_DIPSETTING( 0x02 << shift, "1 2 3 5 10 50 100 200" )
-
static INPUT_PORTS_START( cdracula )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
@@ -3492,7 +3487,7 @@ static INPUT_PORTS_START( tenkai )
PORT_START("DSW4") /* (top) */
MAHJONG_NOTE_CREDITS(0, "SW 1:9", "DSW1", 0) // NOTE RATE
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW 1:10") // モニター画面反転
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR(Flip_Screen) ) PORT_DIPLOCATION("SW 1:10") // モニター画面反転
PORT_DIPSETTING( 0x02, DEF_STR(Off) ) // 通常
PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 反転
PORT_DIPNAME( 0x04, 0x00, "Computer Strength" ) PORT_DIPLOCATION("SW 2:9") // コンピューターの強さ
@@ -3628,7 +3623,7 @@ static INPUT_PORTS_START( mjreach )
PORT_DIPNAME( 0x20, 0x00, "Last Chance" ) PORT_DIPLOCATION("DIP-SW3:6") // ラストチャンス
PORT_DIPSETTING( 0x20, DEF_STR(Off) ) // 無
PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
- PORT_DIPNAME( 0xc0, 0x00, "Last Chance Tsumo Count" ) PORT_DIPLOCATION("DIP-SW3:7,8") // ラストチャンスのツモ回数
+ PORT_DIPNAME( 0xc0, 0x00, "Last Chance Count" ) PORT_DIPLOCATION("DIP-SW3:7,8") // ラストチャンスのツモ回数
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "3" )
PORT_DIPSETTING( 0x00, "5" )
@@ -3653,7 +3648,7 @@ static INPUT_PORTS_START( mjreach )
PORT_DIPNAME( 0x20, 0x00, "In-Game Messages" ) PORT_DIPLOCATION("DIP-SW4:6") // ゲーム中のメッセージ
PORT_DIPSETTING( 0x20, DEF_STR(Off) ) // 無
PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 (shows when kan/pon/chi/ron is possible)
- PORT_DIPNAME( 0x40, 0x00, DEF_STR(Unused) ) PORT_DIPLOCATION("DIP-SW4:7") // ON固定
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR(Unknown) ) PORT_DIPLOCATION("DIP-SW4:7") // ON固定
PORT_DIPSETTING( 0x40, DEF_STR(Off) )
PORT_DIPSETTING( 0x00, DEF_STR(On) )
PORT_DIPNAME( 0x80, 0x80, "Super Revolver Jackpot Payout Rate" ) PORT_DIPLOCATION("DIP-SW4:8") // スパーレボルバーのJACK-POTの出率
@@ -3679,7 +3674,7 @@ static INPUT_PORTS_START( mjreach )
PORT_DIPNAME( 0x40, 0x40, "Renchan Gal Display" ) PORT_DIPLOCATION("DIP-SW4:9") // 連荘ギャルの表示の方式
PORT_DIPSETTING( 0x40, "After Each Win" ) // 勝つごとに表示 (= On according to manual page?)
PORT_DIPSETTING( 0x00, "After 3 Consecutive Wins" ) // 3連荘のみ表示 (= Off according to manual page?)
- PORT_DIPNAME( 0x80, 0x80, DEF_STR(Unused) ) PORT_DIPLOCATION("DIP-SW4:10") // OFF固定
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR(Unknown) ) PORT_DIPLOCATION("DIP-SW4:10") // OFF固定
PORT_DIPSETTING( 0x80, DEF_STR(Off) )
PORT_DIPSETTING( 0x00, DEF_STR(On) )
diff --git a/src/mame/dynax/dynax.h b/src/mame/dynax/dynax.h
index f4b46e20e37ea..061a660a6b338 100644
--- a/src/mame/dynax/dynax.h
+++ b/src/mame/dynax/dynax.h
@@ -462,52 +462,4 @@ class cdracula_state : public dynax_state
INPUT_PORTS_EXTERN(dynax_mahjong_keys);
INPUT_PORTS_EXTERN(dynax_hanafuda_keys_bet);
-#define MAHJONG_PAYOUT_RATE(shift, loc) \
- PORT_DIPNAME( 0x0f << shift, 0x07 << shift, "Payout Rate" ) PORT_DIPLOCATION(loc) \
- PORT_DIPSETTING( 0x00 << shift, "50%" ) \
- PORT_DIPSETTING( 0x01 << shift, "53%" ) \
- PORT_DIPSETTING( 0x02 << shift, "56%" ) \
- PORT_DIPSETTING( 0x03 << shift, "59%" ) \
- PORT_DIPSETTING( 0x04 << shift, "62%" ) \
- PORT_DIPSETTING( 0x05 << shift, "65%" ) \
- PORT_DIPSETTING( 0x06 << shift, "68%" ) \
- PORT_DIPSETTING( 0x07 << shift, "71%" ) \
- PORT_DIPSETTING( 0x08 << shift, "75%" ) \
- PORT_DIPSETTING( 0x09 << shift, "78%" ) \
- PORT_DIPSETTING( 0x0a << shift, "81%" ) \
- PORT_DIPSETTING( 0x0b << shift, "84%" ) \
- PORT_DIPSETTING( 0x0c << shift, "87%" ) \
- PORT_DIPSETTING( 0x0d << shift, "90%" ) \
- PORT_DIPSETTING( 0x0e << shift, "93%" ) \
- PORT_DIPSETTING( 0x0f << shift, "96%" )
-
-#define MAHJONG_COINAGE(shift, loc) \
- PORT_DIPNAME( 0x03 << shift, 0x03 << shift, DEF_STR(Coinage) ) PORT_DIPLOCATION(loc) /* COIN RATE */ \
- PORT_DIPSETTING( 0x03 << shift, DEF_STR(1C_1C) ) /* 1コイン 1プレイ */ \
- PORT_DIPSETTING( 0x02 << shift, DEF_STR(1C_2C) ) /* 1コイン 2プレイ */ \
- PORT_DIPSETTING( 0x01 << shift, DEF_STR(1C_5C) ) /* 1コイン 5プレイ */ \
- PORT_DIPSETTING( 0x00 << shift, "1 Coin/10 Credits" ) /* 1コイン 10プレイ */
-
-#define MAHJONG_NOTE_CREDITS(shift, loc, ct, cs) \
- PORT_DIPNAME( 0x01 << shift, 0x00 << shift, "Credits Per Note" ) PORT_DIPLOCATION(loc) /* NOTE RATE */ \
- PORT_DIPSETTING( 0x01 << shift, "5" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x03 << cs) /* COIN×5 */ \
- PORT_DIPSETTING( 0x01 << shift, "10" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x02 << cs) \
- PORT_DIPSETTING( 0x01 << shift, "25" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x01 << cs) \
- PORT_DIPSETTING( 0x01 << shift, "50" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x00 << cs) \
- PORT_DIPSETTING( 0x00 << shift, "10" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x03 << cs) /* COIN×10 */ \
- PORT_DIPSETTING( 0x00 << shift, "20" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x02 << cs) \
- PORT_DIPSETTING( 0x00 << shift, "50" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x01 << cs) \
- PORT_DIPSETTING( 0x00 << shift, "100" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x00 << cs)
-
-#define MAHJONG_YAKUMAN_BONUS(shift, loc) \
- PORT_DIPNAME( 0x07 << shift, 0x04 << shift, "Yakuman Bonus Cycle" ) PORT_DIPLOCATION(loc) /* 役満ボーナスの設定周期 */ \
- PORT_DIPSETTING( 0x07 << shift, "None" ) /* 無し */ \
- PORT_DIPSETTING( 0x06 << shift, "First time only" ) /* 初回のみ */ \
- PORT_DIPSETTING( 0x05 << shift, "Every 300 coins" ) /* 300コイン毎 */ \
- PORT_DIPSETTING( 0x04 << shift, "Every 500 coins" ) /* 500コイン毎 */ \
- PORT_DIPSETTING( 0x03 << shift, "Every 700 coins" ) /* 700コイン毎 */ \
- PORT_DIPSETTING( 0x02 << shift, "Every 1000 coins" ) /* 1000コイン毎 */ \
- /* PORT_DIPSETTING( 0x01 << shift, "Every 1000 coins" )*/ \
- /* PORT_DIPSETTING( 0x00 << shift, "Every 1000 coins" )*/
-
#endif // MAME_DYNAX_DYNAX_H
diff --git a/src/mame/dynax/mjdipsw.h b/src/mame/dynax/mjdipsw.h
new file mode 100644
index 0000000000000..e086be9310502
--- /dev/null
+++ b/src/mame/dynax/mjdipsw.h
@@ -0,0 +1,69 @@
+// license:BSD-3-Clause
+// copyright-holders:Vas Crabb
+/***************************************************************************
+
+ Common Dynax mahjong DIP switch settings
+
+***************************************************************************/
+#ifndef MAME_DYNAX_MJDIPSW_H
+#define MAME_DYNAX_MJDIPSW_H
+
+#pragma once
+
+
+#define MAHJONG_PAYOUT_RATE(shift, loc) \
+ PORT_DIPNAME( 0x0f << shift, 0x07 << shift, "Payout Rate" ) PORT_DIPLOCATION(loc) \
+ PORT_DIPSETTING( 0x00 << shift, "50%" ) \
+ PORT_DIPSETTING( 0x01 << shift, "53%" ) \
+ PORT_DIPSETTING( 0x02 << shift, "56%" ) \
+ PORT_DIPSETTING( 0x03 << shift, "59%" ) \
+ PORT_DIPSETTING( 0x04 << shift, "62%" ) \
+ PORT_DIPSETTING( 0x05 << shift, "65%" ) \
+ PORT_DIPSETTING( 0x06 << shift, "68%" ) \
+ PORT_DIPSETTING( 0x07 << shift, "71%" ) \
+ PORT_DIPSETTING( 0x08 << shift, "75%" ) \
+ PORT_DIPSETTING( 0x09 << shift, "78%" ) \
+ PORT_DIPSETTING( 0x0a << shift, "81%" ) \
+ PORT_DIPSETTING( 0x0b << shift, "84%" ) \
+ PORT_DIPSETTING( 0x0c << shift, "87%" ) \
+ PORT_DIPSETTING( 0x0d << shift, "90%" ) \
+ PORT_DIPSETTING( 0x0e << shift, "93%" ) \
+ PORT_DIPSETTING( 0x0f << shift, "96%" )
+
+#define MAHJONG_ODDS_RATE(shift, loc) \
+ PORT_DIPNAME( 0x03 << shift, 0x00 << shift, "Odds Rate" ) PORT_DIPLOCATION(loc) \
+ PORT_DIPSETTING( 0x03 << shift, "1 2 4 8 12 16 24 32" ) \
+ PORT_DIPSETTING( 0x00 << shift, "1 2 3 5 8 15 30 50" ) \
+ PORT_DIPSETTING( 0x01 << shift, "1 2 3 5 10 25 50 100" ) \
+ PORT_DIPSETTING( 0x02 << shift, "1 2 3 5 10 50 100 200" )
+
+#define MAHJONG_COINAGE(shift, loc) \
+ PORT_DIPNAME( 0x03 << shift, 0x03 << shift, DEF_STR(Coinage) ) PORT_DIPLOCATION(loc) /* COIN RATE */ \
+ PORT_DIPSETTING( 0x03 << shift, DEF_STR(1C_1C) ) /* 1コイン 1プレイ */ \
+ PORT_DIPSETTING( 0x02 << shift, DEF_STR(1C_2C) ) /* 1コイン 2プレイ */ \
+ PORT_DIPSETTING( 0x01 << shift, DEF_STR(1C_5C) ) /* 1コイン 5プレイ */ \
+ PORT_DIPSETTING( 0x00 << shift, "1 Coin/10 Credits" ) /* 1コイン 10プレイ */
+
+#define MAHJONG_NOTE_CREDITS(shift, loc, ct, cs) \
+ PORT_DIPNAME( 0x01 << shift, 0x00 << shift, "Credits Per Note" ) PORT_DIPLOCATION(loc) /* NOTE RATE */ \
+ PORT_DIPSETTING( 0x01 << shift, "5" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x03 << cs) /* COIN×5 */ \
+ PORT_DIPSETTING( 0x01 << shift, "10" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x02 << cs) \
+ PORT_DIPSETTING( 0x01 << shift, "25" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x01 << cs) \
+ PORT_DIPSETTING( 0x01 << shift, "50" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x00 << cs) \
+ PORT_DIPSETTING( 0x00 << shift, "10" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x03 << cs) /* COIN×10 */ \
+ PORT_DIPSETTING( 0x00 << shift, "20" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x02 << cs) \
+ PORT_DIPSETTING( 0x00 << shift, "50" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x01 << cs) \
+ PORT_DIPSETTING( 0x00 << shift, "100" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x00 << cs)
+
+#define MAHJONG_YAKUMAN_BONUS(shift, loc) \
+ PORT_DIPNAME( 0x07 << shift, 0x04 << shift, "Yakuman Bonus Cycle" ) PORT_DIPLOCATION(loc) /* 役満ボーナスの設定周期 */ \
+ PORT_DIPSETTING( 0x07 << shift, "None" ) /* 無し */ \
+ PORT_DIPSETTING( 0x06 << shift, "First time only" ) /* 初回のみ */ \
+ PORT_DIPSETTING( 0x05 << shift, "Every 300 coins" ) /* 300コイン毎 */ \
+ PORT_DIPSETTING( 0x04 << shift, "Every 500 coins" ) /* 500コイン毎 */ \
+ PORT_DIPSETTING( 0x03 << shift, "Every 700 coins" ) /* 700コイン毎 */ \
+ PORT_DIPSETTING( 0x02 << shift, "Every 1000 coins" ) /* 1000コイン毎 */ \
+ /* PORT_DIPSETTING( 0x01 << shift, "Every 1000 coins" )*/ \
+ /* PORT_DIPSETTING( 0x00 << shift, "Every 1000 coins" )*/
+
+#endif // MAME_DYNAX_MJDIPSW_H
diff --git a/src/mame/dynax/royalmah.cpp b/src/mame/dynax/royalmah.cpp
index 510635970effc..20d8778cd3474 100644
--- a/src/mame/dynax/royalmah.cpp
+++ b/src/mame/dynax/royalmah.cpp
@@ -106,6 +106,8 @@ Stephh's notes (based on the games Z80 code and some tests) :
#include "emu.h"
+#include "mjdipsw.h"
+
#include "mahjong.h"
#include "cpu/tlcs90/tlcs90.h"
@@ -3155,137 +3157,221 @@ static INPUT_PORTS_START( mjtensin )
INPUT_PORTS_END
static INPUT_PORTS_START( cafetime ) // dips definitions and defaults taken from MT05580, this uses 10 switch dip banks
+ // The manual provides two sets of standard settings:
+ // 標準設定 シングル向け 標準設定 コーナー向け
+ // SW 1 OFF OFF OFF ON ON ON OFF ON ON OFF OFF OFF OFF ON ON ON OFF ON ON OFF
+ // SW 2 OFF OFF OFF OFF ON ON OFF ON ON OFF OFF OFF OFF OFF ON OFF ON ON ON OFF
+ // SW 3 OFF OFF ON ON ON ON ON OFF OFF OFF OFF OFF ON ON ON ON ON OFF OFF OFF
+ // SW 4 OFF ON ON ON ON ON OFF ON OFF OFF ON ON OFF ON ON ON OFF ON OFF OFF
+
PORT_INCLUDE( mjctrl2 )
PORT_START("DSW1") // IN11
- PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate" ) PORT_DIPLOCATION("SW1:1,2,3,4")
- PORT_DIPSETTING( 0x0f, "96%" )
- PORT_DIPSETTING( 0x0e, "93%" )
- PORT_DIPSETTING( 0x0d, "90%" )
- PORT_DIPSETTING( 0x0c, "87%" )
- PORT_DIPSETTING( 0x0b, "84%" )
- PORT_DIPSETTING( 0x0a, "81%" )
- PORT_DIPSETTING( 0x09, "78%" )
- PORT_DIPSETTING( 0x08, "75%" )
- PORT_DIPSETTING( 0x07, "71%" )
- PORT_DIPSETTING( 0x06, "68%" )
- PORT_DIPSETTING( 0x05, "65%" )
- PORT_DIPSETTING( 0x04, "62%" )
- PORT_DIPSETTING( 0x03, "59%" )
- PORT_DIPSETTING( 0x02, "56%" )
- PORT_DIPSETTING( 0x01, "53%" )
- PORT_DIPSETTING( 0x00, "50%" )
- PORT_DIPNAME( 0x30, 0x00, "Odds Rate" ) PORT_DIPLOCATION("SW1:5,6") // Yakuman - Triple - Double - Haneman - Mangan - 3 Han - 2 Han - 1 Han
- PORT_DIPSETTING( 0x30, "32-24-16-12-8-4-2-1" )
- PORT_DIPSETTING( 0x00, "50-30-15-8-5-3-2-1" )
- PORT_DIPSETTING( 0x10, "100-50-25-10-5-3-2-1" )
- PORT_DIPSETTING( 0x20, "200-100-50-10-5-3-2-1" )
- PORT_DIPNAME( 0xc0, 0x40, "Maximum Bet" ) PORT_DIPLOCATION("SW1:7,8")
+ MAHJONG_PAYOUT_RATE(0, "SW 1:1,2,3,4") // PAY-OUT RATE
+ MAHJONG_ODDS_RATE(4, "SW 1:5,6") // ODDS RATE
+ PORT_DIPNAME( 0xc0, 0x40, "Maximum Bet" ) PORT_DIPLOCATION("SW 1:7,8") // BET-MAX
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
PORT_DIPSETTING( 0x00, "20" )
- PORT_START("DSW2") // IN12, defaults for 'single type'
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:1,2")
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
- PORT_DIPSETTING( 0x00, "1C_10C" )
- PORT_DIPNAME( 0x0c, 0x0c, "Minimum Rate" ) PORT_DIPLOCATION("SW2:3,4")
- PORT_DIPSETTING( 0x0c, "1" )
- PORT_DIPSETTING( 0x08, "2" )
- PORT_DIPSETTING( 0x04, "3" )
- PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x70, 0x40, "Yakuman Bonus" ) PORT_DIPLOCATION("SW2:5,6,7") // default for 'corner type' would be 0x20
- PORT_DIPSETTING( 0x70, DEF_STR( No ) )
- PORT_DIPSETTING( 0x60, "Once on Start" )
- PORT_DIPSETTING( 0x50, "Every 300 Coins" )
- PORT_DIPSETTING( 0x40, "Every 500 Coins" )
- PORT_DIPSETTING( 0x30, "Every 700 Coins" )
- PORT_DIPSETTING( 0x20, "Every 1000 Coins" )
- PORT_DIPSETTING( 0x10, DEF_STR( Unknown ) ) // not listed on dip sheet
- PORT_DIPSETTING( 0x00, DEF_STR( Unknown ) ) // not listed on dip sheet
- PORT_DIPNAME( 0x80, 0x00, "Yakuman Bonus Cycle" ) PORT_DIPLOCATION("SW2:8")
- PORT_DIPSETTING( 0x00, "Once" )
- PORT_DIPSETTING( 0x80, "Twice" )
+ PORT_START("DSW2") // IN12
+ MAHJONG_COINAGE(0, "SW 2:1,2") // COIN RATE
+ PORT_DIPNAME( 0x0c, 0x0c, "Minimum Bet" ) PORT_DIPLOCATION("SW 2:3,4") // ゲーム・スタート時の最低レート数
+ PORT_DIPSETTING( 0x0c, "1" ) // レート 1
+ PORT_DIPSETTING( 0x08, "2" ) // レート 2
+ PORT_DIPSETTING( 0x04, "3" ) // レート 3
+ PORT_DIPSETTING( 0x00, "5" ) // レート 5
+ MAHJONG_YAKUMAN_BONUS(4, "SW 2:5,6,7") // 役満ボーナスの設定周期
+ PORT_DIPNAME( 0x80, 0x00, "Yakuman Bonuses Per Cycle" ) PORT_DIPLOCATION("SW 2:8") // 役満ボーナスの回数設定周期毎に
+ PORT_DIPSETTING( 0x00, "1" ) // 1回
+ PORT_DIPSETTING( 0x80, "2" ) // 2回
PORT_START("DSW3") // IN13
- PORT_DIPNAME( 0x01, 0x01, "Payout Type" ) PORT_DIPLOCATION("SW3:1")
- PORT_DIPSETTING( 0x01, "Credits" )
- PORT_DIPSETTING( 0x00, "Hopper" )
- PORT_DIPNAME( 0x02, 0x02, "Hopper Type" ) PORT_DIPLOCATION("SW3:2")
- PORT_DIPSETTING( 0x02, DEF_STR( Normal ) )
- PORT_DIPSETTING( 0x00, "Reversed" )
- PORT_DIPNAME( 0x04, 0x00, "W-Bet" ) PORT_DIPLOCATION("SW3:3")
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x00, "Renchan Rate" ) PORT_DIPLOCATION("SW3:4")
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x00, "Last Chance" ) PORT_DIPLOCATION("SW3:5")
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x00, "Good Time Timer" ) PORT_DIPLOCATION("SW3:6")
- PORT_DIPSETTING( 0x00, "3 Minutes" )
- PORT_DIPSETTING( 0x20, "5 Minutes" )
- PORT_DIPNAME( 0x40, 0x00, "Quiz Bonus" ) PORT_DIPLOCATION("SW3:7")
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "Quiz Bonus Points" ) PORT_DIPLOCATION("SW3:8")
- PORT_DIPSETTING( 0x00, "2" )
- PORT_DIPSETTING( 0x80, "3" )
+ PORT_DIPNAME( 0x01, 0x01, "Payout Mode" ) PORT_DIPLOCATION("SW 3:1") // ゲーム・タイプ
+ PORT_DIPSETTING( 0x01, "Key-out" ) // クレジット・タイプ
+ PORT_DIPSETTING( 0x00, "Hopper" ) // ホッパー・タイプ
+ PORT_DIPNAME( 0x02, 0x02, "Hopper Polarity" ) PORT_DIPLOCATION("SW 3:2") // ホッパー・アクティブ
+ PORT_DIPSETTING( 0x02, DEF_STR(Normal) ) // 通常
+ PORT_DIPSETTING( 0x00, "Inverted" ) // 反転
+ PORT_DIPNAME( 0x04, 0x00, "Double Bet" ) PORT_DIPLOCATION("SW 3:3") // W-BET
+ PORT_DIPSETTING( 0x04, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x08, 0x00, "Renchan Rate" ) PORT_DIPLOCATION("SW 3:4") // 連荘レート
+ PORT_DIPSETTING( 0x08, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x10, 0x00, "Last Chance" ) PORT_DIPLOCATION("SW 3:5") // ラスト・チャンス
+ PORT_DIPSETTING( 0x10, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x20, 0x00, "Good Time Duration" ) PORT_DIPLOCATION("SW 3:6") // Good Time の時間
+ PORT_DIPSETTING( 0x00, "3 Minutes" ) // 3分間
+ PORT_DIPSETTING( 0x20, "5 Minutes" ) // 5分間
+ PORT_DIPNAME( 0x40, 0x00, "Quiz Bonus" ) PORT_DIPLOCATION("SW 3:7") // クイズ・ボーナス
+ PORT_DIPSETTING( 0x40, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x80, 0x80, "Quiz Bonus Points" ) PORT_DIPLOCATION("SW 3:8") // クイズ・ボーナスのポイント
+ PORT_DIPSETTING( 0x00, "2" ) // 2点
+ PORT_DIPSETTING( 0x80, "3" ) // 3点
+
+ PORT_START("DSW4") // IN14
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR(Demo_Sounds) ) PORT_DIPLOCATION("SW 4:1") // デモ・サウンド
+ PORT_DIPSETTING( 0x01, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x02, 0x00, "In-Game Music" ) PORT_DIPLOCATION("SW 4:2") // ゲーム・サウンド
+ PORT_DIPSETTING( 0x02, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x04, 0x00, "Don Den Button" ) PORT_DIPLOCATION("SW 4:3") // Don・Den 機能ボタン変更
+ PORT_DIPSETTING( 0x04, "Start" ) // スタート・ボタ
+ PORT_DIPSETTING( 0x00, "Flip Flop" ) // F/F・ボタン
+ PORT_DIPNAME( 0x08, 0x00, "Auto Reach" ) PORT_DIPLOCATION("SW 4:4") // オート・リーチ
+ PORT_DIPSETTING( 0x08, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x10, 0x00, "Show 4-Panel Comics" ) PORT_DIPLOCATION("SW 4:5") // 4コマ・漫画表示
+ PORT_DIPSETTING( 0x10, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x20, 0x00, "Background Color" ) PORT_DIPLOCATION("SW 4:6") // バック・カラー
+ PORT_DIPSETTING( 0x20, "Black" ) // 黒
+ PORT_DIPSETTING( 0x00, "Green" ) // 緑
+ PORT_DIPNAME( 0x40, 0x40, "Stage Select" ) PORT_DIPLOCATION("SW 4:7") // 本(ステージ)セレクト
+ PORT_DIPSETTING( 0x40, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x80, 0x00, "Yakuman Match" ) PORT_DIPLOCATION("SW 4:8") // 役満勝負
+ PORT_DIPSETTING( 0x80, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+
+ PORT_START("DSWTOP") // IN15, actually switches 9-10 of the first 4 banks
+ MAHJONG_NOTE_CREDITS(0, "SW 1:9", "DSW2", 0) // NOTE RATE
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR(Flip_Screen) ) PORT_DIPLOCATION("SW 1:10") // モニター画面反転
+ PORT_DIPSETTING( 0x02, DEF_STR(Off) ) // 通常
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 反転
+ PORT_DIPNAME( 0x04, 0x00, "Computer Strength" ) PORT_DIPLOCATION("SW 2:9") // コンピューターの強さ
+ PORT_DIPSETTING( 0x00, DEF_STR(Normal) ) // 普通
+ PORT_DIPSETTING( 0x04, "Strong" ) // 強い
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR(Unknown) ) PORT_DIPLOCATION("SW 2:10") // OFF固定
+ PORT_DIPSETTING( 0x08, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x00, DEF_STR(On) )
+ PORT_DIPNAME( 0x30, 0x30, "Quiz Questions Table" ) PORT_DIPLOCATION("SW 3:9,10") // クイズ問題テーブル
+ PORT_DIPSETTING( 0x30, "A" ) // テーブル A
+ PORT_DIPSETTING( 0x20, "B" ) // テーブル B
+ PORT_DIPSETTING( 0x10, "C" ) // テーブル C
+ PORT_DIPSETTING( 0x00, "D" ) // テーブル D
+ PORT_DIPNAME( 0x40, 0x40, "Yakuman Match Frequency" ) PORT_DIPLOCATION("SW 4:9") // 役満勝負の頻度
+ PORT_DIPSETTING( 0x00, DEF_STR(Normal) ) // 普通
+ PORT_DIPSETTING( 0x40, "Frequent" ) // よく出る
+ PORT_DIPNAME( 0x80, 0x80, "4-Panel Comic Type" ) PORT_DIPLOCATION("SW 4:10") // 4コマ・漫画 タイプ
+ PORT_DIPSETTING( 0x00, "A" ) // Aタイプ
+ PORT_DIPSETTING( 0x80, "B" ) // Bタイプ
+INPUT_PORTS_END
- PORT_START("DSW4") // IN14, defaults for 'single type'
- PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW4:1") // Should be off for 'single type' and on for 'corner type', left on for easier regression testing
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x00, "BGM during Gameplay" ) PORT_DIPLOCATION("SW4:2")
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x00, "Don Den Button" ) PORT_DIPLOCATION("SW4:3") // Off for 'corner type'
- PORT_DIPSETTING( 0x04, "Start Button" )
- PORT_DIPSETTING( 0x00, "F/F Button" )
- PORT_DIPNAME( 0x08, 0x00, "Auto Reach" ) PORT_DIPLOCATION("SW4:4")
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x00, "Full Test" ) PORT_DIPLOCATION("SW4:5") // 4 koma comic test
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x00, "Background" ) PORT_DIPLOCATION("SW4:6")
- PORT_DIPSETTING( 0x20, "Black" )
- PORT_DIPSETTING( 0x00, "Green" )
- PORT_DIPNAME( 0x40, 0x40, "Book (Stage) Select" ) PORT_DIPLOCATION("SW4:7")
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x00, "Yakuman Match" ) PORT_DIPLOCATION("SW4:8")
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+static INPUT_PORTS_START( cafedoll )
+ // The manual provides three sets of standard settings:
+ // 標準設定 シングル向け 標準設定 メダル コーナー向け 標準設定 アミューズ コーナー向け
+ // SW 1 OFF OFF OFF ON ON ON OFF ON ON OFF OFF OFF OFF ON ON ON OFF ON ON OFF ON OFF OFF ON OFF OFF ON OFF ON OFF
+ // SW 2 OFF OFF OFF OFF ON ON ON ON ON ON OFF OFF OFF OFF ON ON ON ON ON ON OFF OFF OFF OFF ON ON ON ON ON ON
+ // SW 3 ON OFF ON ON ON OFF OFF ON OFF OFF OFF ON ON ON ON OFF OFF ON OFF OFF OFF OFF OFF OFF OFF OFF OFF OFF ON ON
+ // SW 4 OFF ON ON ON ON ON ON ON OFF OFF ON ON ON ON OFF ON ON ON ON OFF ON ON ON ON OFF ON ON ON ON OFF
- PORT_START("DSWTOP") // IN15, actually dips 9-10 of the first 4 banks
- PORT_DIPNAME( 0x01, 0x00, "Credits Per Note" ) PORT_DIPLOCATION("SW1:9")
- PORT_DIPSETTING( 0x01, "5" )
- PORT_DIPSETTING( 0x00, "10" )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:10")
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:9")
- PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:10") // listed as Unused OFF
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x30, 0x30, "Quiz Questions Table" ) PORT_DIPLOCATION("SW3:9,10")
- PORT_DIPSETTING( 0x30, "A" )
- PORT_DIPSETTING( 0x20, "B" )
- PORT_DIPSETTING( 0x10, "C" )
- PORT_DIPSETTING( 0x00, "D" )
- PORT_DIPNAME( 0x40, 0x40, "Yakuman Match Frequency" ) PORT_DIPLOCATION("SW4:9")
- PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )
- PORT_DIPSETTING( 0x40, "Often" )
- PORT_DIPNAME( 0x80, 0x80, "4 Koma Comic Type" ) PORT_DIPLOCATION("SW4:10")
- PORT_DIPSETTING( 0x00, "A" )
- PORT_DIPSETTING( 0x80, "B" )
+ PORT_INCLUDE( mjctrl2 )
+
+ PORT_START("DSW1") // IN11
+ MAHJONG_PAYOUT_RATE(0, "SW 1:1,2,3,4") // PAY-OUT RATE
+ MAHJONG_ODDS_RATE(4, "SW 1:5,6") // ODDS RATE
+ PORT_DIPNAME( 0xc0, 0x40, "Maximum Bet" ) PORT_DIPLOCATION("SW 1:7,8") // BET-MAX
+ PORT_DIPSETTING( 0xc0, "1" )
+ PORT_DIPSETTING( 0x80, "5" )
+ PORT_DIPSETTING( 0x40, "10" )
+ PORT_DIPSETTING( 0x00, "20" )
+
+ PORT_START("DSW2") // IN12
+ MAHJONG_COINAGE(0, "SW 2:1,2") // COIN RATE
+ PORT_DIPNAME( 0x0c, 0x0c, "Minimum Bet" ) PORT_DIPLOCATION("SW 2:3,4") // ゲーム・スタート時の最低レート数
+ PORT_DIPSETTING( 0x0c, "1" ) // レート 1
+ PORT_DIPSETTING( 0x08, "2" ) // レート 2
+ PORT_DIPSETTING( 0x04, "3" ) // レート 3
+ PORT_DIPSETTING( 0x00, "5" ) // レート 5
+ PORT_DIPNAME( 0x30, 0x00, "Credit Limit" ) PORT_DIPLOCATION("SW 2:5,6") // クレジット・コインリミット
+ PORT_DIPSETTING( 0x30, "300" )
+ PORT_DIPSETTING( 0x20, "500" )
+ PORT_DIPSETTING( 0x10, "700" )
+ PORT_DIPSETTING( 0x00, "1000" )
+ PORT_DIPNAME( 0x40, 0x00, "Double Bet" ) PORT_DIPLOCATION("SW 2:7") // W-BET機能
+ PORT_DIPSETTING( 0x40, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x80, 0x00, "Renchan Rate" ) PORT_DIPLOCATION("SW 2:8") // 連荘レート
+ PORT_DIPSETTING( 0x80, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+
+ PORT_START("DSW3") // IN13
+ PORT_DIPNAME( 0x03, 0x02, "Bonus Chance Cycle" ) PORT_DIPLOCATION("SW 3:1,2") // ボーナス・チャンスの設定周期
+ PORT_DIPSETTING( 0x03, "First time only" ) // 初回のみ
+ PORT_DIPSETTING( 0x02, "Every 500 coins" ) // 500コイン毎
+ PORT_DIPSETTING( 0x01, "Every 700 coins" ) // 700コイン毎
+ PORT_DIPSETTING( 0x00, "Every 1000 coins" ) // 1000コイン毎
+ PORT_DIPNAME( 0x04, 0x00, "Bonus Chances Per Cycle" ) PORT_DIPLOCATION("SW 3:3") // ボーナス・チャンスの回数設定周期毎に
+ PORT_DIPSETTING( 0x00, "1" ) // 1回
+ PORT_DIPSETTING( 0x04, "2" ) // 2回
+ PORT_DIPNAME( 0x18, 0x00, "Bonus Chance Combination" ) PORT_DIPLOCATION("SW 3:4,5") // ボーナス・チャンスの組みあわせ
+ PORT_DIPSETTING( 0x18, "No Bonus Chance" ) // ボーナス・チャンス無し
+ PORT_DIPSETTING( 0x10, "Yakuman Chance Only" ) // 役満チャンスのみ
+ PORT_DIPSETTING( 0x08, "Renzoku Chance Only" ) // 連続チャンスのみ
+ PORT_DIPSETTING( 0x00, "(A) Yakuman Chance and (B) Renzoku Chance" ) // (A)役満チャンスと(B)連続チャンス
+ PORT_DIPNAME( 0x60, 0x60, "Ratio of (A) and (B) When Combined" ) PORT_DIPLOCATION("SW 3:6,7") // 組み合わせ複合時の(A)(B)の出率
+ PORT_DIPSETTING( 0x60, "Equal" ) // 同等
+ PORT_DIPSETTING( 0x40, "More of (A)" ) // (A)が多い
+ PORT_DIPSETTING( 0x20, "More of (B)" ) // (B)が多い
+ PORT_DIPNAME( 0x80, 0x00, "Renzoku Chance Payout" ) PORT_DIPLOCATION("SW 3:8") // 連続チャンスの配当
+ PORT_DIPSETTING( 0x80, DEF_STR(Low) ) // 小さい
+ PORT_DIPSETTING( 0x00, DEF_STR(Normal) ) // 通常
+
+ PORT_START("DSW4") // IN14
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR(Demo_Sounds) ) PORT_DIPLOCATION("SW 4:1") // デモ・サウンド
+ PORT_DIPSETTING( 0x01, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x02, 0x00, "In-Game Music" ) PORT_DIPLOCATION("SW 4:2") // ゲーム・サウンド
+ PORT_DIPSETTING( 0x02, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x04, 0x00, "Background Color" ) PORT_DIPLOCATION("SW 4:3") // バック・カラー
+ PORT_DIPSETTING( 0x04, "Black" ) // 黒
+ PORT_DIPSETTING( 0x00, "Green" ) // グリーン
+ PORT_DIPNAME( 0x08, 0x00, "Last Chance" ) PORT_DIPLOCATION("SW 4:4") // ラスト・チャンス
+ PORT_DIPSETTING( 0x08, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x10, 0x00, "Don Den Button" ) PORT_DIPLOCATION("SW 4:5") // Don・Den 機能ボタン変更
+ PORT_DIPSETTING( 0x10, "Start" ) // スタート・ボタ
+ PORT_DIPSETTING( 0x00, "Flip Flop" ) // F/F・ボタン
+ PORT_DIPNAME( 0x20, 0x00, "Show 4-Panel Comics" ) PORT_DIPLOCATION("SW 4:6") // 4コマ・漫画表示
+ PORT_DIPSETTING( 0x20, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x40, 0x00, "Quiz Bonus" ) PORT_DIPLOCATION("SW 4:7") // クイズ・ボーナス
+ PORT_DIPSETTING( 0x40, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x80, 0x00, "Mid-Game Bonus Game" ) PORT_DIPLOCATION("SW 4:8") // ゲーム中のボーナス ゲーム
+ PORT_DIPSETTING( 0x80, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+
+ PORT_START("DSWTOP") // IN15, actually switches 9-10 of the first 4 banks
+ MAHJONG_NOTE_CREDITS(0, "SW 1:9", "DSW2", 0) // NOTE RATE
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR(Flip_Screen) ) PORT_DIPLOCATION("SW 1:10") // モニター画面反転
+ PORT_DIPSETTING( 0x02, DEF_STR(Off) ) // 通常
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 反転
+ PORT_DIPNAME( 0x04, 0x00, "Computer Strength" ) PORT_DIPLOCATION("SW 2:9") // コンピューターの強さ
+ PORT_DIPSETTING( 0x00, DEF_STR(Normal) ) // 普通
+ PORT_DIPSETTING( 0x04, "Strong" ) // 強い
+ PORT_DIPNAME( 0x08, 0x00, "Auto Reach" ) PORT_DIPLOCATION("SW 2:10") // オート・リーチ機能
+ PORT_DIPSETTING( 0x08, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x10, 0x10, "Game Type" ) PORT_DIPLOCATION("SW 3:9") // ゲーム タイプ
+ PORT_DIPSETTING( 0x10, "Credit Type" ) // クレジット タイプ
+ PORT_DIPSETTING( 0x00, "Credit Timer Type" ) // クレジット タイマー タイプ
+ PORT_DIPNAME( 0x20, 0x20, "Game Start Rate 1" ) PORT_DIPLOCATION("SW 3:10") // ゲームスタート レート1
+ PORT_DIPSETTING( 0x20, DEF_STR(Normal) ) // 通常
+ PORT_DIPSETTING( 0x00, "Fixed" ) // 固定
+ PORT_DIPNAME( 0x40, 0x40, "Just Time Bonus Standard Settings" ) PORT_DIPLOCATION("SW 4:9") // ジャスト・タイム・ボーナス 標準設定
+ PORT_DIPSETTING( 0x40, "Single" ) // シングル向け
+ PORT_DIPSETTING( 0x00, "Medal Corner" ) // メダル コーナー向け
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR(Unknown) ) PORT_DIPLOCATION("SW 4:10") // OFF固定
+ PORT_DIPSETTING( 0x80, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x00, DEF_STR(On) )
INPUT_PORTS_END
static INPUT_PORTS_START( ippatsu )
@@ -6256,8 +6342,8 @@ GAME( 1990, mjifb3, mjifb, mjifb, mjifb, royalmah_prgbank_state,
GAME( 1991, mjvegasa, 0, mjvegasa, mjvegasa, royalmah_prgbank_state, init_mjvegasa, ROT0, "Dynax", "Mahjong Vegas (Japan, unprotected)", 0 )
GAME( 1991, mjvegas, mjvegasa, mjvegas, mjvegasa, royalmah_prgbank_state, init_mjvegas, ROT0, "Dynax", "Mahjong Vegas (Japan)", 0 )
GAME( 1992, cafetime, 0, cafetime, cafetime, royalmah_prgbank_state, init_cafetime, ROT0, "Dynax", "Mahjong Cafe Time", 0 )
-GAME( 1993, cafedoll, 0, cafedoll, cafetime, royalmah_prgbank_state, init_cafedoll, ROT0, "Dynax", "Mahjong Cafe Doll (Japan, Ver. 1.00)", MACHINE_NOT_WORKING ) // fails protection check (at 0x178 it puts 0x55 in 0xFFBF instead of 0x56 like the code expects and chaos ensues)
-GAME( 1993, cafedollg, cafedoll, cafedoll, cafetime, royalmah_prgbank_state, init_cafedoll, ROT0, "Dynax", "Mahjong Cafe Doll Great (Japan, Ver. 1.00)", MACHINE_NOT_WORKING ) // fails protection check (at 0x178 it puts 0x55 in 0xFFBF instead of 0x56 like the code expects and chaos ensues)
+GAME( 1993, cafedoll, 0, cafedoll, cafedoll, royalmah_prgbank_state, init_cafedoll, ROT0, "Dynax", "Mahjong Cafe Doll (Japan, Ver. 1.00)", MACHINE_NOT_WORKING ) // fails protection check (at 0x178 it puts 0x55 in 0xFFBF instead of 0x56 like the code expects and chaos ensues)
+GAME( 1993, cafedollg, cafedoll, cafedoll, cafedoll, royalmah_prgbank_state, init_cafedoll, ROT0, "Dynax", "Mahjong Cafe Doll Great (Japan, Ver. 1.00)", MACHINE_NOT_WORKING ) // fails protection check (at 0x178 it puts 0x55 in 0xFFBF instead of 0x56 like the code expects and chaos ensues)
GAME( 1993, ichiban, 0, ichiban, ichiban, royalmah_prgbank_state, init_ichiban, ROT0, "Excel", "Ichi Ban Jyan", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) // ROM banking is wrong, causing several GFX problems
GAME( 1993, dragonmj, 0, ichiban, ichiban, royalmah_prgbank_state, init_ichiban, ROT0, "OCT", "Dragon Mahjong (Ver 1.20)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) // " - DRAGON Ver1.20 1993/11/09
GAME( 1993, dragonmj103, dragonmj, ichiban, ichiban, royalmah_prgbank_state, init_ichiban, ROT0, "OCT", "Dragon Mahjong (Ver 1.03)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) // " - DRAGON Ver1.03 1993/10/16
diff --git a/src/mame/gottlieb/gottlieb.cpp b/src/mame/gottlieb/gottlieb.cpp
index 7098a3c1c8818..d321e44683451 100644
--- a/src/mame/gottlieb/gottlieb.cpp
+++ b/src/mame/gottlieb/gottlieb.cpp
@@ -426,9 +426,12 @@ void gottlieb_state::machine_start()
void gottlieb_state::machine_reset()
{
- /* if we have a laserdisc, reset our philips code callback for the next line 17 */
+ // if we have a laserdisc, reset our philips code callback for the next line 17
if (m_laserdisc != nullptr)
m_laserdisc_philips_timer->adjust(m_screen->time_until_pos(17), 17);
+
+ // HACK: prevent NMI immediately after soft reset
+ m_maincpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
}
diff --git a/src/mame/handheld/hh_e0c6x.cpp b/src/mame/handheld/hh_e0c6x.cpp
new file mode 100644
index 0000000000000..38d3acde69b70
--- /dev/null
+++ b/src/mame/handheld/hh_e0c6x.cpp
@@ -0,0 +1,470 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+// thanks-to:digshadow, Segher, azya
+/*******************************************************************************
+
+Seiko Epson E0C6S46 / E0C6S48 handhelds, mostly electronic keychain toys from
+the late-1990s. The first Tamagotchi games are on this MCU.
+
+These were meant to stay on 24/7, so make sure to use save states if you want
+to play the games for a longer time. For the drivers that don't have an SVG
+screen, use -prescale or -nofilter to disable bilinear filtering.
+
+TODO:
+- stackch only LEFT and ON buttons work, both are bit 0, MCU opcode bug?
+- SVGs could be more accurate? it seems they're handmade instead of a 1:1 scan
+ like for eg. the Game & Watch LCDs
+- alienfev unmapped reads/writes, or are they harmless?
+- add LCD deflicker like hh_sm510? see venusdm for example
+- hook up LCD contrast, does any game use it? (eg. for fade-out)
+
+*******************************************************************************/
+
+#include "emu.h"
+
+#include "cpu/e0c6200/e0c6s46.h"
+#include "sound/spkrdev.h"
+
+#include "emupal.h"
+#include "screen.h"
+#include "speaker.h"
+
+// internal artwork
+#include "hh_e0c6x_lcd.lh"
+
+
+namespace {
+
+class hh_e0c6x_state : public driver_device
+{
+public:
+ hh_e0c6x_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_out_x(*this, "%u.%u", 0U, 0U)
+ { }
+
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
+
+protected:
+ virtual void machine_start() override ATTR_COLD;
+
+ void lcd_segment_w(offs_t offset, u8 data) { m_out_x[offset & 0xf][offset >> 4] = data; }
+
+ required_device m_maincpu;
+ output_finder<16, 51> m_out_x; // max 16 * 51
+};
+
+void hh_e0c6x_state::machine_start()
+{
+ m_out_x.resolve();
+}
+
+
+
+/*******************************************************************************
+
+ Helper Functions
+
+*******************************************************************************/
+
+// generic input handlers
+
+#define PORT_CHANGED_CB(x) \
+ PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(hh_e0c6x_state::input_changed), E0C6S46_LINE_K00 + x)
+
+INPUT_CHANGED_MEMBER(hh_e0c6x_state::input_changed)
+{
+ // inputs are hooked up backwards here, because MCU input ports are all tied to its interrupt controller
+ m_maincpu->set_input_line(param, newval ? ASSERT_LINE : CLEAR_LINE);
+}
+
+
+
+/*******************************************************************************
+
+ Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs)
+
+*******************************************************************************/
+
+/*******************************************************************************
+
+ Bandai Tamagotchi (Generation 1)
+ * PCB label: TMG-M1
+ * Seiko Epson E0C6S46 MCU under epoxy
+ * 32*16 LCD screen + 8 custom segments, 1-bit sound
+
+ Generation 2 is on the exact same hardware.
+
+*******************************************************************************/
+
+class tama_state : public hh_e0c6x_state
+{
+public:
+ tama_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_e0c6x_state(mconfig, type, tag)
+ { }
+
+ void tama(machine_config &config);
+};
+
+// inputs
+
+static INPUT_PORTS_START( tama )
+ PORT_START("K0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_CB(0)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_CB(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_CB(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
+
+// config
+
+void tama_state::tama(machine_config &config)
+{
+ // basic machine hardware
+ E0C6S46(config, m_maincpu, 32.768_kHz_XTAL);
+ m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3);
+ m_maincpu->write_segs().set(FUNC(tama_state::lcd_segment_w));
+
+ // video hardware
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
+ screen.set_refresh_hz(32);
+ screen.set_size(1119, 1080);
+ screen.set_visarea_full();
+
+ config.set_default_layout(layout_hh_e0c6x_lcd);
+
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25);
+}
+
+// roms
+
+ROM_START( tama )
+ ROM_REGION( 0x3000, "maincpu", 0 )
+ ROM_LOAD( "tama.bin", 0x0000, 0x3000, CRC(5c864cb1) SHA1(4b4979cf92dc9d2fb6d7295a38f209f3da144f72) )
+
+ ROM_REGION( 0x3000, "maincpu:test", 0 )
+ ROM_LOAD( "test.bin", 0x0000, 0x3000, CRC(4372220e) SHA1(6e13d015113e16198c0059b9d0c38d7027ae7324) ) // this rom is on the die too, test pin enables it?
+
+ ROM_REGION( 139072, "screen", 0)
+ ROM_LOAD( "tama.svg", 0, 139072, CRC(9468b964) SHA1(ab49471db21a00a3b3a68da39c40da69da5d7e1b) )
+ROM_END
+
+ROM_START( tamag2 )
+ ROM_REGION( 0x3000, "maincpu", 0 )
+ ROM_LOAD( "tamag2.bin", 0x0000, 0x3000, CRC(9f97539e) SHA1(09e5101b37636a314fc599d5d69b4846721b3c88) )
+
+ ROM_REGION( 139072, "screen", 0)
+ ROM_LOAD( "tama.svg", 0, 139072, CRC(9468b964) SHA1(ab49471db21a00a3b3a68da39c40da69da5d7e1b) )
+ROM_END
+
+
+
+
+
+/*******************************************************************************
+
+ Bandai Tamagotchi Angel (aka Angel Gotch in Japan)
+ * Seiko Epson E0C6S48
+ * 32*16 LCD screen + 8 custom segments, 1-bit sound
+
+ Mothra no Tamagotch is on similar hardware.
+
+*******************************************************************************/
+
+class tamaang_state : public hh_e0c6x_state
+{
+public:
+ tamaang_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_e0c6x_state(mconfig, type, tag)
+ { }
+
+ void tamaang(machine_config &config);
+};
+
+// inputs
+
+static INPUT_PORTS_START( tamaang )
+ PORT_INCLUDE( tama )
+
+ PORT_MODIFY("K0")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CHANGED_CB(3) PORT_NAME("Vibration Sensor")
+INPUT_PORTS_END
+
+// config
+
+void tamaang_state::tamaang(machine_config &config)
+{
+ // basic machine hardware
+ E0C6S48(config, m_maincpu, 32.768_kHz_XTAL);
+ m_maincpu->set_osc3(1'000'000);
+ m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3);
+ m_maincpu->write_segs().set(FUNC(tamaang_state::lcd_segment_w));
+
+ // video hardware
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
+ screen.set_refresh_hz(32);
+ screen.set_size(1119, 1080);
+ screen.set_visarea_full();
+
+ config.set_default_layout(layout_hh_e0c6x_lcd);
+
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25);
+}
+
+// roms
+
+ROM_START( tamaang )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ ROM_LOAD( "tamaang.bin", 0x0000, 0x4000, CRC(87bcb59f) SHA1(f5899bb7717756ac581451cf16cf97d909961c5c) )
+
+ ROM_REGION( 139978, "screen", 0)
+ ROM_LOAD( "tamaang.svg", 0, 139978, CRC(76f27f06) SHA1(b416275a12173316e053fa994c5fd68a4d5c1a5c) )
+ROM_END
+
+ROM_START( tamamot )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ ROM_LOAD( "tamamot.bin", 0x0000, 0x4000, CRC(85e4bee9) SHA1(74c1f6761724b7cbda8bca3113db78586b786d2d) )
+
+ ROM_REGION( 138289, "screen", 0)
+ ROM_LOAD( "tamamot.svg", 0, 138289, CRC(4e8210c2) SHA1(522536ae5bf744889c0d028c3a292bdf649f81e3) )
+ROM_END
+
+
+
+
+
+/*******************************************************************************
+
+ Epoch Chibi Pachi: Alien Fever
+ * Seiko Epson E0C6S46 MCU
+ * 39*16 LCD screen, 1-bit sound
+
+ It's a Pachislot keychain game, the MCU constantly runs on the higher-speed OSC3.
+
+*******************************************************************************/
+
+class alienfev_state : public hh_e0c6x_state
+{
+public:
+ alienfev_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_e0c6x_state(mconfig, type, tag)
+ { }
+
+ void alienfev(machine_config &config);
+};
+
+// inputs
+
+static INPUT_PORTS_START( alienfev )
+ PORT_START("K0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_CB(0) PORT_NAME("Mode")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_CB(1) PORT_NAME("Select")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(2) PORT_NAME("Sound")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_CB(3) PORT_NAME("Handle")
+INPUT_PORTS_END
+
+// config
+
+void alienfev_state::alienfev(machine_config &config)
+{
+ // basic machine hardware
+ E0C6S46(config, m_maincpu, 32.768_kHz_XTAL);
+ m_maincpu->set_osc3(1'000'000);
+ m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3);
+
+ // video hardware
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
+ screen.set_refresh_hz(32);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(39, 16);
+ screen.set_visarea_full();
+ screen.set_screen_update(m_maincpu, FUNC(e0c6s46_device::screen_update));
+ screen.set_palette("palette");
+
+ PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
+
+ config.set_default_layout(layout_hh_e0c6x_lcd);
+
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25);
+}
+
+// roms
+
+ROM_START( alienfev )
+ ROM_REGION( 0x3000, "maincpu", 0 )
+ ROM_LOAD( "alienfev.bin", 0x0000, 0x3000, CRC(e561599c) SHA1(7927e198f8989861ba057150e59d1f4ad403c1d2) )
+ROM_END
+
+
+
+
+
+/*******************************************************************************
+
+ Nikko Beans Collection: Venus Diet Monogatari
+ * Seiko Epson E0C6S46 MCU
+ * 32*20 LCD screen, 1-bit sound
+
+*******************************************************************************/
+
+class venusdm_state : public hh_e0c6x_state
+{
+public:
+ venusdm_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_e0c6x_state(mconfig, type, tag)
+ { }
+
+ void venusdm(machine_config &config);
+
+private:
+ void pixel_callback(int &dx, int &dy) { int x = dx; dx = dy | (dx / 20) << 4; dy = x % 20; }
+};
+
+// inputs
+
+static INPUT_PORTS_START( venusdm )
+ PORT_START("K1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_CB(4)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_CB(5)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_CB(6)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
+
+// config
+
+void venusdm_state::venusdm(machine_config &config)
+{
+ // basic machine hardware
+ E0C6S46(config, m_maincpu, 32.768_kHz_XTAL);
+ m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3);
+ m_maincpu->set_pixel_callback(FUNC(venusdm_state::pixel_callback));
+
+ // video hardware
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
+ screen.set_refresh_hz(32);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(32, 20);
+ screen.set_visarea_full();
+ screen.set_screen_update(m_maincpu, FUNC(e0c6s46_device::screen_update));
+ screen.set_palette("palette");
+
+ PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
+
+ config.set_default_layout(layout_hh_e0c6x_lcd);
+
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25);
+}
+
+// roms
+
+ROM_START( venusdm )
+ ROM_REGION( 0x3000, "maincpu", 0 )
+ ROM_LOAD( "venusdm.bin", 0x0000, 0x3000, CRC(2228b081) SHA1(22f6a2ede6259e76f1c8b9b50171c54d8a7de502) )
+ROM_END
+
+
+
+
+
+/*******************************************************************************
+
+ Tandy (Radio Shack division) Stack Challenge (model 60-2247)
+ * Seiko Epson E0C6S46 MCU
+ * 10*21 LCD screen + custom segments, 1-bit sound
+
+ It's a brick game clone. The game is supposedly from 1991 (it's included in
+ the 1992 Radio Shack catalog). Did E0C6S46 exist already, or is this a newer
+ revision?
+
+*******************************************************************************/
+
+class stackch_state : public hh_e0c6x_state
+{
+public:
+ stackch_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_e0c6x_state(mconfig, type, tag)
+ { }
+
+ void stackch(machine_config &config);
+};
+
+// inputs
+
+static INPUT_PORTS_START( stackch )
+ PORT_START("K0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_16WAY PORT_CHANGED_CB(0) PORT_NAME("Left / Level")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_16WAY PORT_CHANGED_CB(1) PORT_NAME("Down / Start")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_16WAY PORT_CHANGED_CB(2) PORT_NAME("Right / Height")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_CB(3)
+
+ PORT_START("K1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POWER_ON ) PORT_CHANGED_CB(4) PORT_NAME("On / Off")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SELECT ) PORT_CHANGED_CB(5) PORT_NAME("Pause")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(6) PORT_NAME("Sound")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
+
+// config
+
+void stackch_state::stackch(machine_config &config)
+{
+ // basic machine hardware
+ E0C6S46(config, m_maincpu, 32.768_kHz_XTAL);
+ m_maincpu->set_osc3(1'000'000);
+ m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3);
+ m_maincpu->write_segs().set(FUNC(stackch_state::lcd_segment_w));
+
+ // video hardware
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
+ screen.set_refresh_hz(32);
+ screen.set_size(856, 1080);
+ screen.set_visarea_full();
+
+ config.set_default_layout(layout_hh_e0c6x_lcd);
+
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25);
+}
+
+// roms
+
+ROM_START( stackch )
+ ROM_REGION( 0x3000, "maincpu", 0 )
+ ROM_LOAD( "stackch.bin", 0x0000, 0x3000, CRC(28b9310a) SHA1(52b80d70aa7fc3b6323799403b3aba0e3d957f3b) )
+
+ ROM_REGION( 133022, "screen", 0)
+ ROM_LOAD( "stackch.svg", 0, 133022, CRC(caf74ad4) SHA1(2f2e836b0efe377305bb113a550f1cb4ec939273) )
+ROM_END
+
+} // anonymous namespace
+
+
+
+/*******************************************************************************
+
+ Game driver(s)
+
+*******************************************************************************/
+
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
+SYST( 1997, tama, 0, 0, tama, tama, tama_state, empty_init, "Bandai", "Tamagotchi (Gen. 1, World)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+SYST( 1997, tamag2, 0, 0, tama, tama, tama_state, empty_init, "Bandai", "Tamagotchi (Gen. 2, Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+SYST( 1997, tamaang, 0, 0, tamaang, tamaang, tamaang_state, empty_init, "Bandai", "Angel Gotch (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+SYST( 1997, tamamot, 0, 0, tamaang, tama, tamaang_state, empty_init, "Bandai", "Mothra no Tamagotch (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+
+SYST( 1997, alienfev, 0, 0, alienfev, alienfev, alienfev_state, empty_init, "Epoch", "Chibi Pachi: Alien Fever", MACHINE_SUPPORTS_SAVE )
+
+SYST( 1997, venusdm, 0, 0, venusdm, venusdm, venusdm_state, empty_init, "Nikko", "Beans Collection: Venus Diet Monogatari", MACHINE_SUPPORTS_SAVE )
+
+SYST( 1991, stackch, 0, 0, stackch, stackch, stackch_state, empty_init, "Tandy Corporation", "Stack Challenge", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
diff --git a/src/mame/handheld/hh_ht11xx.cpp b/src/mame/handheld/hh_ht11xx.cpp
index 05b1910d2cebc..16ff0ab967c71 100644
--- a/src/mame/handheld/hh_ht11xx.cpp
+++ b/src/mame/handheld/hh_ht11xx.cpp
@@ -32,11 +32,13 @@ HTG1395 3-in-1 (Car racing, Soccer, The eagle preys on the chicken)
#include "speaker.h"
// internal artwork
-#include "hh_ht11xx_single.lh"
+#include "hh_ht11xx_lcd.lh"
namespace {
+// base class
+
class hh_ht11xx_state : public driver_device
{
public:
@@ -53,16 +55,34 @@ class hh_ht11xx_state : public driver_device
required_device m_maincpu;
};
-class hh_ht1190_state : public hh_ht11xx_state
+INPUT_CHANGED_MEMBER(hh_ht11xx_state::input_wakeup)
+{
+ m_maincpu->set_input_line(HT1130_EXT_WAKEUP_LINE, newval ? CLEAR_LINE : ASSERT_LINE);
+}
+
+void hh_ht11xx_state::mcfg_svg_screen(machine_config &config, u16 width, u16 height, const char *tag)
+{
+ screen_device &screen(SCREEN(config, tag, SCREEN_TYPE_SVG));
+ screen.set_refresh_hz(60);
+ screen.set_size(width, height);
+ screen.set_visarea_full();
+
+ config.set_default_layout(layout_hh_ht11xx_lcd);
+}
+
+
+// HT1130 class
+
+class hh_ht1130_state : public hh_ht11xx_state
{
public:
- hh_ht1190_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_ht1130_state(const machine_config &mconfig, device_type type, const char *tag) :
hh_ht11xx_state(mconfig, type, tag),
m_out_x(*this, "%u.%u", 0U, 0U),
m_in(*this, "IN%u", 1)
{ }
- void brke23p2(machine_config &config);
+ void ga888(machine_config &config);
protected:
virtual void machine_start() override ATTR_COLD;
@@ -70,21 +90,35 @@ class hh_ht1190_state : public hh_ht11xx_state
void segment_w(offs_t offset, u64 data);
private:
- output_finder<8, 40> m_out_x;
- required_ioport_array<2> m_in;
+ output_finder<4, 32> m_out_x;
+ required_ioport_array<3> m_in;
};
+void hh_ht1130_state::machine_start()
+{
+ m_out_x.resolve();
+}
-class hh_ht1130_state : public hh_ht11xx_state
+void hh_ht1130_state::segment_w(offs_t offset, u64 data)
+{
+ // output to x.y where x = COM# and y = SEG#
+ for (int i = 0; i < 32; i++)
+ m_out_x[offset][i] = BIT(data, i);
+}
+
+
+// HT1190 class
+
+class hh_ht1190_state : public hh_ht11xx_state
{
public:
- hh_ht1130_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_ht1190_state(const machine_config &mconfig, device_type type, const char *tag) :
hh_ht11xx_state(mconfig, type, tag),
m_out_x(*this, "%u.%u", 0U, 0U),
m_in(*this, "IN%u", 1)
{ }
- void ga888(machine_config &config);
+ void brke23p2(machine_config &config);
protected:
virtual void machine_start() override ATTR_COLD;
@@ -92,8 +126,8 @@ class hh_ht1130_state : public hh_ht11xx_state
void segment_w(offs_t offset, u64 data);
private:
- output_finder<4, 32> m_out_x;
- required_ioport_array<3> m_in;
+ output_finder<8, 40> m_out_x;
+ required_ioport_array<2> m_in;
};
void hh_ht1190_state::machine_start()
@@ -101,16 +135,30 @@ void hh_ht1190_state::machine_start()
m_out_x.resolve();
}
-void hh_ht1130_state::machine_start()
+void hh_ht1190_state::segment_w(offs_t offset, u64 data)
{
- m_out_x.resolve();
+ // output to x.y where x = COM# and y = SEG#
+ for (int i = 0; i < 40; i++)
+ m_out_x[offset][i] = BIT(data, i);
}
-INPUT_CHANGED_MEMBER(hh_ht11xx_state::input_wakeup)
-{
- m_maincpu->set_input_line(HT1130_EXT_WAKEUP_LINE, newval ? CLEAR_LINE : ASSERT_LINE);
-}
+
+/*******************************************************************************
+
+ Minidrivers (optional subclass, I/O, Inputs, Machine Config, ROM Defs)
+
+*******************************************************************************/
+
+/*******************************************************************************
+
+ E-Star Brick Game 96 in 1 (E-23 Plus Mark II)
+ * Holtek HT1190
+ * 10*20 LCD screen + custom segments, 1-bit sound
+
+*******************************************************************************/
+
+// inputs
static INPUT_PORTS_START( brke23p2 )
PORT_START("IN1")
@@ -126,6 +174,48 @@ static INPUT_PORTS_START( brke23p2 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Left")
INPUT_PORTS_END
+// config
+
+void hh_ht1190_state::brke23p2(machine_config &config)
+{
+ HT1190(config, m_maincpu, 1000000/8); // frequency?
+ m_maincpu->segment_out_cb().set(FUNC(hh_ht1190_state::segment_w));
+
+ m_maincpu->ps_in_cb().set_ioport(m_in[0]);
+ m_maincpu->pp_in_cb().set_ioport(m_in[1]);
+
+ SPEAKER(config, "speaker").front_center();
+
+ mcfg_svg_screen(config, 755, 1080);
+}
+
+// roms
+
+ROM_START( brke23p2 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "brke23p2.bin", 0x0000, 0x1000, CRC(8045fac4) SHA1(a36213309e6add31f31e4248f02f17de9914a5c1) ) // visual decap
+
+ ROM_REGION( 0x280, "melody", 0 )
+ ROM_LOAD( "e23plusmarkii96in1.srom", 0x000, 0x280, CRC(591a8a21) SHA1(f039359e8e1d1bf75581a4c852b263c8c140e072) )
+
+ ROM_REGION( 160500, "screen", 0)
+ ROM_LOAD( "brke23p2.svg", 0, 160500, CRC(9edf8aab) SHA1(f2ab907d23517612196648f1b5b0cb9b4a1ab3bd) )
+ROM_END
+
+
+
+
+
+/*******************************************************************************
+
+ Block Game & Echo Key GA888
+ * Holtek HT1130
+ * 8*12 LCD screen + 8 custom segments, 1-bit sound
+
+*******************************************************************************/
+
+// inputs
+
static INPUT_PORTS_START( ga888 ) // the unit also has an up button, and a reset button, is 'up' connected to anything?
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_NAME("Pause / Power") PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(hh_ht11xx_state::input_wakeup), 0)
@@ -146,47 +236,7 @@ static INPUT_PORTS_START( ga888 ) // the unit also has an up button, and a reset
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Left")
INPUT_PORTS_END
-void hh_ht1190_state::segment_w(offs_t offset, u64 data)
-{
- for (int i = 0; i < 40; i++)
- {
- // output to x.y where x = COM# and y = SEG#
- m_out_x[offset][i] = BIT(data, i);
- }
-}
-
-void hh_ht1130_state::segment_w(offs_t offset, u64 data)
-{
- for (int i = 0; i < 32; i++)
- {
- // output to x.y where x = COM# and y = SEG#
- m_out_x[offset][i] = BIT(data, i);
- }
-}
-
-
-void hh_ht11xx_state::mcfg_svg_screen(machine_config &config, u16 width, u16 height, const char *tag)
-{
- screen_device &screen(SCREEN(config, tag, SCREEN_TYPE_SVG));
- screen.set_refresh_hz(60);
- screen.set_size(width, height);
- screen.set_visarea_full();
-
- config.set_default_layout(layout_hh_ht11xx_single);
-}
-
-void hh_ht1190_state::brke23p2(machine_config &config)
-{
- HT1190(config, m_maincpu, 1000000/8); // frequency?
- m_maincpu->segment_out_cb().set(FUNC(hh_ht1190_state::segment_w));
-
- m_maincpu->ps_in_cb().set_ioport(m_in[0]);
- m_maincpu->pp_in_cb().set_ioport(m_in[1]);
-
- SPEAKER(config, "speaker").front_center();
-
- mcfg_svg_screen(config, 755, 1080);
-}
+// config
void hh_ht1130_state::ga888(machine_config &config)
{
@@ -202,16 +252,7 @@ void hh_ht1130_state::ga888(machine_config &config)
mcfg_svg_screen(config, 698, 1080);
}
-ROM_START( brke23p2 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "brke23p2.bin", 0x0000, 0x1000, CRC(8045fac4) SHA1(a36213309e6add31f31e4248f02f17de9914a5c1) ) // visual decap
-
- ROM_REGION( 0x280, "melody", 0 )
- ROM_LOAD( "e23plusmarkii96in1.srom", 0x000, 0x280, CRC(591a8a21) SHA1(f039359e8e1d1bf75581a4c852b263c8c140e072) )
-
- ROM_REGION( 160500, "screen", 0)
- ROM_LOAD( "brke23p2.svg", 0, 160500, CRC(9edf8aab) SHA1(f2ab907d23517612196648f1b5b0cb9b4a1ab3bd) )
-ROM_END
+// roms
ROM_START( ga888 )
ROM_REGION( 0x1000, "maincpu", 0 )
@@ -224,11 +265,17 @@ ROM_START( ga888 )
ROM_LOAD( "ga888.svg", 0, 85508, CRC(9ab6dd67) SHA1(a4365a00204bf4e376f28600c0b87289bda0cbb0) )
ROM_END
-
} // anonymous namespace
-// some other dieshots have 1996 on them, it is also possible the software is from Holtek
-CONS( 1993, brke23p2, 0, 0, brke23p2, brke23p2, hh_ht1190_state, empty_init, "E-Star", "Brick Game 96 in 1 (E-23 Plus Mark II)", MACHINE_IMPERFECT_TIMING | MACHINE_NO_SOUND )
-CONS( 199?, ga888, 0, 0, ga888, ga888, hh_ht1130_state, empty_init, "", "Block Game & Echo Key GA888", MACHINE_IMPERFECT_TIMING | MACHINE_NO_SOUND ) // clone of Tetris Jr?
+/*******************************************************************************
+
+ Game driver(s)
+
+*******************************************************************************/
+
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
+CONS( 1993, brke23p2, 0, 0, brke23p2, brke23p2, hh_ht1190_state, empty_init, "E-Star", "Brick Game 96 in 1 (E-23 Plus Mark II)", MACHINE_IMPERFECT_TIMING | MACHINE_NO_SOUND ) // some other dieshots have 1996 on them, it is also possible the software is from Holtek
+
+CONS( 199?, ga888, 0, 0, ga888, ga888, hh_ht1130_state, empty_init, "", "Block Game & Echo Key GA888", MACHINE_IMPERFECT_TIMING | MACHINE_NO_SOUND ) // clone of Tetris Jr?
diff --git a/src/mame/igs/goldstar.cpp b/src/mame/igs/goldstar.cpp
index 39f119d97e76e..e1b3bd05a0f63 100644
--- a/src/mame/igs/goldstar.cpp
+++ b/src/mame/igs/goldstar.cpp
@@ -14576,13 +14576,13 @@ ROM_START( lucky8n )
ROM_LOAD( "g13", 0x00, 0x20, BAD_DUMP CRC(6df3f972) SHA1(0096a7f7452b70cac6c0752cb62e24b643015b5c) )
ROM_END
-// only the subboard available (Z80, ROM, 2 stickered chips, 2 banks of 8 DIP switches (marked SW5 and SW6) and a rotary switch (SW7))
+// only the subboard available (Z80, ROM, 2 stickered chips (sanded), 2 banks of 8 DIP switches (marked SW5 and SW6) and a rotary switch (SW7))
// very professional-looking subboard marked Excel Planning
// needs correct GFX ROMs / color PROMs (using the ones from wcat3, for now)
ROM_START( wcat )
ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD( "y8.u1.sub", 0x00000, 0x20000, CRC(49e11ff4) SHA1(ce421f85b298c2e9c335fdbf0547a355ae29f1a6) )
- ROM_FILL( 0x1c000, 0x1000, 0xc9 ) // jumps in this area multiple times, but nothing there. Something to do with the 2 stickered chips?
+ ROM_FILL( 0x1c000, 0x1000, 0xc9 ) // jumps in this area multiple times, but nothing here. Something to do with the 2 stickered chips?
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_LOAD( "wcat3.h7", 0x10000, 0x8000, BAD_DUMP CRC(065cb575) SHA1(4dd49773c4caeaa489342e61f26c8eaaae876edc) )
diff --git a/src/mame/jaleco/megasys1.h b/src/mame/jaleco/megasys1.h
index 5c8393e8bdfdc..4aa6c4c73b292 100644
--- a/src/mame/jaleco/megasys1.h
+++ b/src/mame/jaleco/megasys1.h
@@ -91,8 +91,8 @@ class megasys1_state : public driver_device
void system_base(machine_config &config) ATTR_COLD;
void system_B(machine_config &config) ATTR_COLD;
- void system_C(machine_config &config) ATTR_COLD;
-
+ void system_C(machine_config &config) ATTR_COLD;
+
void megasys1_palette(palette_device &palette);
virtual void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect);
diff --git a/src/mame/konami/rungun.cpp b/src/mame/konami/rungun.cpp
index a30508862a4e4..2a5b03a1486d1 100644
--- a/src/mame/konami/rungun.cpp
+++ b/src/mame/konami/rungun.cpp
@@ -53,8 +53,7 @@ class rungun_state : public driver_device
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu"),
- m_k054539_1(*this, "k054539_1"),
- m_k054539_2(*this, "k054539_2"),
+ m_k054539(*this, "k054539_%u", 0),
m_k053936(*this, "k053936"),
m_k055673(*this, "k055673"),
m_k053252(*this, "k053252"),
@@ -84,8 +83,7 @@ class rungun_state : public driver_device
/* devices */
required_device m_maincpu;
required_device m_soundcpu;
- required_device m_k054539_1;
- required_device m_k054539_2;
+ required_device_array m_k054539;
required_device m_k053936;
required_device m_k055673;
required_device m_k053252;
@@ -110,23 +108,23 @@ class rungun_state : public driver_device
tilemap_t *m_ttl_tilemap[2]{};
tilemap_t *m_936_tilemap[2]{};
std::unique_ptr m_psac2_vram;
- std::unique_ptr m_ttl_vram;
- std::unique_ptr m_pal_ram;
- uint8_t m_current_display_bank = 0;
+ std::unique_ptr m_ttl_vram;
+ std::unique_ptr m_pal_ram;
+ uint8_t m_current_display_bank = 0;
int m_ttl_gfx_index = 0;
int m_sprite_colorbase = 0;
- uint8_t *m_roz_rom = nullptr;
- uint8_t m_roz_rombase = 0;
+ uint8_t *m_roz_rom = nullptr;
+ uint8_t m_roz_rombase = 0;
/* sound */
- uint8_t m_sound_ctrl = 0;
- uint8_t m_sound_nmi_clk = 0;
+ uint8_t m_sound_ctrl = 0;
+ uint8_t m_sound_nmi_clk = 0;
bool m_video_priority_mode = false;
std::unique_ptr m_banked_ram;
bool m_single_screen_mode = false;
- uint8_t m_video_mux_bank = 0;
+ uint8_t m_video_mux_bank = 0;
uint16_t sysregs_r(offs_t offset, uint16_t mem_mask = ~0);
void sysregs_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
@@ -140,9 +138,8 @@ class rungun_state : public driver_device
TILE_GET_INFO_MEMBER(ttl_get_tile_info);
TILE_GET_INFO_MEMBER(get_rng_936_tile_info);
void k054539_nmi_gen(int state);
- uint16_t palette_read(offs_t offset);
- void palette_write(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
-
+ uint16_t palette_r(offs_t offset);
+ void palette_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
K055673_CB_MEMBER(sprite_callback);
@@ -152,7 +149,7 @@ class rungun_state : public driver_device
uint32_t screen_update_rng_dual_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
bitmap_ind16 m_rng_dual_demultiplex_left_temp;
bitmap_ind16 m_rng_dual_demultiplex_right_temp;
- void sprite_dma_trigger(void);
+ void sprite_dma_trigger(void);
INTERRUPT_GEN_MEMBER(rng_interrupt);
@@ -182,10 +179,11 @@ uint16_t rungun_state::sysregs_r(offs_t offset, uint16_t mem_mask)
*/
{
uint8_t field_bit = m_screen->frame_number() & 1;
- if(m_single_screen_mode == true)
+ if (m_single_screen_mode == true)
field_bit = 1;
return (m_system->read() & 0xfdff) | (field_bit << 9);
}
+
case 0x06/2:
if (ACCESSING_BITS_0_7)
{
@@ -231,7 +229,7 @@ void rungun_state::sysregs_w(offs_t offset, uint16_t data, uint16_t mem_mask)
if (!(data & 0x400)) // actually a 0 -> 1 transition
m_maincpu->set_input_line(M68K_IRQ_5, CLEAR_LINE);
}
- break;
+ break;
case 0x0c/2:
/*
@@ -243,7 +241,7 @@ void rungun_state::sysregs_w(offs_t offset, uint16_t data, uint16_t mem_mask)
*/
m_k055673->k053246_set_objcha_line((data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
m_roz_rombase = (data & 0xf0) >> 4;
- break;
+ break;
}
}
@@ -267,38 +265,36 @@ uint8_t rungun_state::k53936_rom_r(offs_t offset)
{
// TODO: odd addresses returns ...?
uint32_t rom_addr = offset;
- rom_addr+= (m_roz_rombase)*0x20000;
+ rom_addr += m_roz_rombase * 0x20000;
return m_roz_rom[rom_addr];
}
-uint16_t rungun_state::palette_read(offs_t offset)
+uint16_t rungun_state::palette_r(offs_t offset)
{
return m_pal_ram[offset + m_video_mux_bank*0x800/2];
}
-void rungun_state::palette_write(offs_t offset, uint16_t data, uint16_t mem_mask)
+void rungun_state::palette_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
- palette_device &cur_paldevice = m_video_mux_bank == 0 ? *m_palette : *m_palette2;
uint32_t addr = offset + m_video_mux_bank*0x800/2;
COMBINE_DATA(&m_pal_ram[addr]);
- uint8_t r,g,b;
+ uint8_t r = m_pal_ram[addr] & 0x1f;
+ uint8_t g = (m_pal_ram[addr] & 0x3e0) >> 5;
+ uint8_t b = (m_pal_ram[addr] & 0x7e00) >> 10;
- r = m_pal_ram[addr] & 0x1f;
- g = (m_pal_ram[addr] & 0x3e0) >> 5;
- b = (m_pal_ram[addr] & 0x7e00) >> 10;
-
- cur_paldevice.set_pen_color(offset,pal5bit(r),pal5bit(g),pal5bit(b));
+ palette_device &cur_paldevice = m_video_mux_bank == 0 ? *m_palette : *m_palette2;
+ cur_paldevice.set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
}
void rungun_state::rungun_map(address_map &map)
{
map(0x000000, 0x2fffff).rom(); // main program + data
- map(0x300000, 0x3007ff).rw(FUNC(rungun_state::palette_read), FUNC(rungun_state::palette_write));
+ map(0x300000, 0x3007ff).rw(FUNC(rungun_state::palette_r), FUNC(rungun_state::palette_w));
map(0x380000, 0x39ffff).ram(); // work RAM
map(0x400000, 0x43ffff).r(FUNC(rungun_state::k53936_rom_r)).umask16(0x00ff); // '936 ROM readback window
map(0x480000, 0x48001f).rw(FUNC(rungun_state::sysregs_r), FUNC(rungun_state::sysregs_w)).share("sysreg");
- map(0x4c0000, 0x4c001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); // CCU (for scanline and vblank polling)
+ map(0x4c0000, 0x4c001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); // CCU (for scanline and vblank polling)
map(0x540000, 0x540001).w(FUNC(rungun_state::sound_irq_w));
map(0x580000, 0x58001f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0xff00);
map(0x5c0000, 0x5c000f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); // 246A ROM readback window
@@ -334,12 +330,12 @@ K055673_CB_MEMBER(rungun_state::sprite_callback)
uint16_t rungun_state::ttl_ram_r(offs_t offset)
{
- return m_ttl_vram[offset+(m_video_mux_bank*0x1000)];
+ return m_ttl_vram[offset + (m_video_mux_bank*0x1000)];
}
void rungun_state::ttl_ram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
- COMBINE_DATA(&m_ttl_vram[offset+(m_video_mux_bank*0x1000)]);
+ COMBINE_DATA(&m_ttl_vram[offset + (m_video_mux_bank*0x1000)]);
m_ttl_tilemap[m_video_mux_bank]->mark_tile_dirty(offset / 2);
}
@@ -398,7 +394,7 @@ void rungun_state::video_start()
m_ttl_gfx_index = gfx_index;
// create the tilemaps
- for(uint32_t screen_num = 0;screen_num < 2;screen_num++)
+ for (uint32_t screen_num = 0; screen_num < 2; screen_num++)
{
m_ttl_tilemap[screen_num] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rungun_state::ttl_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_ttl_tilemap[screen_num]->set_user_data((void *)(uintptr_t)(screen_num * 0x2000));
@@ -420,10 +416,10 @@ uint32_t rungun_state::screen_update_rng(screen_device &screen, bitmap_ind16 &bi
bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
m_current_display_bank = m_screen->frame_number() & 1;
- if(m_single_screen_mode == true)
+ if (m_single_screen_mode == true)
m_current_display_bank = 0;
- if(m_video_priority_mode == false)
+ if (m_video_priority_mode == false)
{
m_k053936->zoom_draw(screen, bitmap, cliprect, m_936_tilemap[m_current_display_bank], 0, 0, 1);
m_k055673->k053247_sprites_draw(bitmap, cliprect);
@@ -464,14 +460,14 @@ void rungun_state::sprite_dma_trigger(void)
{
uint32_t src_address;
- if(m_single_screen_mode == true)
+ if (m_single_screen_mode == true)
src_address = 1*0x2000;
else
src_address = m_current_display_bank*0x2000;
// TODO: size could be programmable somehow.
- for(int i=0;i<0x1000;i+=2)
- m_k055673->k053247_word_w(i/2, m_banked_ram[(i + src_address) /2]);
+ for (int i = 0; i < 0x1000; i += 2)
+ m_k055673->k053247_word_w(i / 2, m_banked_ram[(i + src_address) / 2]);
}
@@ -514,9 +510,9 @@ void rungun_state::rungun_sound_map(address_map &map)
map(0x0000, 0x7fff).rom();
map(0x8000, 0xbfff).bankr("bank2");
map(0xc000, 0xdfff).ram();
- map(0xe000, 0xe22f).rw(m_k054539_1, FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xe000, 0xe22f).rw(m_k054539[0], FUNC(k054539_device::read), FUNC(k054539_device::write));
map(0xe230, 0xe3ff).ram();
- map(0xe400, 0xe62f).rw(m_k054539_2, FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xe400, 0xe62f).rw(m_k054539[1], FUNC(k054539_device::read), FUNC(k054539_device::write));
map(0xe630, 0xe7ff).ram();
map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map));
map(0xf800, 0xf800).w(FUNC(rungun_state::sound_ctrl_w));
@@ -624,19 +620,16 @@ void rungun_state::machine_start()
m_bank2->configure_entries(0, 8, &ROM[0x10000], 0x4000);
m_banked_ram = make_unique_clear(0x2000);
- m_pal_ram = make_unique_clear(0x800*2);
- m_spriteram_bank->configure_entries(0,2,&m_banked_ram[0],0x2000);
+ m_pal_ram = make_unique_clear(0x800);
+ m_spriteram_bank->configure_entries(0, 2, &m_banked_ram[0], 0x2000);
save_item(NAME(m_sound_ctrl));
save_item(NAME(m_sound_nmi_clk));
- //save_item(NAME(m_ttl_vram));
}
void rungun_state::machine_reset()
{
memset(m_sysreg, 0, 0x20);
- //memset(m_ttl_vram, 0, 0x1000 * sizeof(uint16_t));
-
m_sound_ctrl = 0;
}
@@ -685,8 +678,8 @@ void rungun_state::rng(machine_config &config)
m_k053252->set_screen("screen");
PALETTE(config, m_palette2).set_format(palette_device::xBGR_555, 1024);
- m_palette->enable_shadows();
- m_palette->enable_hilights();
+ m_palette2->enable_shadows();
+ m_palette2->enable_hilights();
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -695,17 +688,17 @@ void rungun_state::rng(machine_config &config)
K054321(config, m_k054321, "lspeaker", "rspeaker");
// SFX
- K054539(config, m_k054539_1, 18.432_MHz_XTAL);
- m_k054539_1->set_device_rom_tag("k054539");
- m_k054539_1->timer_handler().set(FUNC(rungun_state::k054539_nmi_gen));
- m_k054539_1->add_route(0, "rspeaker", 1.0);
- m_k054539_1->add_route(1, "lspeaker", 1.0);
+ K054539(config, m_k054539[0], 18.432_MHz_XTAL);
+ m_k054539[0]->set_device_rom_tag("k054539");
+ m_k054539[0]->timer_handler().set(FUNC(rungun_state::k054539_nmi_gen));
+ m_k054539[0]->add_route(0, "rspeaker", 1.0);
+ m_k054539[0]->add_route(1, "lspeaker", 1.0);
// BGM, volumes handtuned to make SFXs audible (still not 100% right tho)
- K054539(config, m_k054539_2, 18.432_MHz_XTAL);
- m_k054539_2->set_device_rom_tag("k054539");
- m_k054539_2->add_route(0, "rspeaker", 0.6);
- m_k054539_2->add_route(1, "lspeaker", 0.6);
+ K054539(config, m_k054539[1], 18.432_MHz_XTAL);
+ m_k054539[1]->set_device_rom_tag("k054539");
+ m_k054539[1]->add_route(0, "rspeaker", 0.6);
+ m_k054539[1]->add_route(1, "lspeaker", 0.6);
}
// for dual-screen output Run and Gun requires the video de-multiplexer board connected to the Jamma output, this gives you 2 Jamma connectors, one for each screen.
@@ -717,16 +710,16 @@ void rungun_state::rng_dual(machine_config &config)
m_screen->set_screen_update(FUNC(rungun_state::screen_update_rng_dual_left));
- screen_device &demultiplex2(SCREEN(config, "demultiplex2", SCREEN_TYPE_RASTER));
- demultiplex2.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
- demultiplex2.set_refresh_hz(59.185606);
- demultiplex2.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- demultiplex2.set_size(64*8, 32*8);
- demultiplex2.set_visarea(88, 88+416-1, 24, 24+224-1);
- demultiplex2.set_screen_update(FUNC(rungun_state::screen_update_rng_dual_right));
- demultiplex2.set_palette(m_palette2);
+ screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER));
+ screen2.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ screen2.set_refresh_hz(59.185606);
+ screen2.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen2.set_size(64*8, 32*8);
+ screen2.set_visarea(88, 88+416-1, 24, 24+224-1);
+ screen2.set_screen_update(FUNC(rungun_state::screen_update_rng_dual_right));
+ screen2.set_palette(m_palette2);
- m_k053252->set_slave_screen("demultiplex2");
+ m_k053252->set_slave_screen("screen2");
}
diff --git a/src/mame/layout/hh_ht11xx_single.lay b/src/mame/layout/hh_e0c6x_lcd.lay
similarity index 100%
rename from src/mame/layout/hh_ht11xx_single.lay
rename to src/mame/layout/hh_e0c6x_lcd.lay
diff --git a/src/mame/layout/hh_ht11xx_lcd.lay b/src/mame/layout/hh_ht11xx_lcd.lay
new file mode 100644
index 0000000000000..1e847d9b61173
--- /dev/null
+++ b/src/mame/layout/hh_ht11xx_lcd.lay
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/layout/tama.lay b/src/mame/layout/tama.lay
deleted file mode 100644
index 403676fee81b5..0000000000000
--- a/src/mame/layout/tama.lay
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/mame/layout/vgmplay.lay b/src/mame/layout/vgmplay.lay
index 2317397478d5c..0101a2375cd66 100644
--- a/src/mame/layout/vgmplay.lay
+++ b/src/mame/layout/vgmplay.lay
@@ -97,31 +97,79 @@ license:CC0-1.0
-
-
-
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ ]]>
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+ ]]>
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+ ]]>
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+ ]]>
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+ ]]>
+
@@ -218,23 +266,13 @@ license:CC0-1.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 67812d662a115..da20163dc9df3 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -2498,9 +2498,6 @@ rx78 //
@source:bandai/sv8000.cpp
sv8000 // Super Vision 8000
-@source:bandai/tamag1.cpp
-tama // Bandai
-
@source:bandai/wswan.cpp
pockchv2 // Benesse Pocket Challenge V2
wscolor // Bandai WonderSwan Color Handheld
@@ -19148,6 +19145,15 @@ msoccer // Mattel
qkracer // National Semiconductor
qkspeller // National Semiconductor
+@source:handheld/hh_e0c6x.cpp
+alienfev // Epoch
+stackch // Tandy Corporation
+tama // Bandai
+tamaang // Bandai
+tamag2 // Bandai
+tamamot // Bandai
+venusdm // Nikko
+
@source:handheld/hh_hmcs40.cpp
alnattck // Coleco
bambball // Bambino
@@ -29181,9 +29187,16 @@ abigchs // Big Cheese
aclown // Clown
atlantca // Atlantica
atlantcaa //
+atrbonpk // Bonus Poker
+atrbtlma // Beetlemania
+atricmon // I C Money
+atricmona //
atronic //
atronica //
-baboshka // Baboshka
+atronicb //
+atrwild // Wild Thing
+baboshka // Babooshka
+baboshkar //
beachpt // Beach Patrol
bearnec // Bear Necessities
beetleup // Beetles Unplugged
@@ -29193,21 +29206,23 @@ castawaya //
cfblue // Crazy Fruits Blue
cfbluea //
cfgreen // Crazy Fruits Green
+chicdale // Chickendales
chicken // Chicken
dncsprt // Dancing Spirit
drmmake // Dream Maker
+drmmaker //
goldcity // Gold City
goldglen // Golden Glenn
+haphippy // Happy Happy Hippy
iccash // I C Cash
jumpjkpt // Jumping Jackpots
mushmagi // Mushroom Magic
santam // Santa Maria
-shpinxii // Sphinx II
+sphinxii // Sphinx II
+sphinxiir //
splmastr // Spell Master
tajmah // Tajmahal
-atrwild
-atricmon
-atrbonpk
+tylagoon // Typhoon Lagoon
@source:misc/attckufo.cpp
attckufo // (c) 1980 Ryoto Electric Co.
@@ -45981,6 +45996,7 @@ rad_digi
@source:tvgames/spg2xx_dreamlife.cpp
dreamlif //
dsgnwrld
+gigapets
@source:tvgames/spg2xx_ican.cpp
icanguit //
diff --git a/src/mame/midway/williams.cpp b/src/mame/midway/williams.cpp
index fe2cb299380cc..aef8ed98ea234 100644
--- a/src/mame/midway/williams.cpp
+++ b/src/mame/midway/williams.cpp
@@ -41,7 +41,7 @@
****************************************************************************
- CA00-CA07 blitter (Stargate and Defender do not have blitter)
+ CA00-CA07 blitter (Stargate and Defender do not have blitter)
CB00 6 bits of the video counters bits 2-7
diff --git a/src/mame/misc/atronic.cpp b/src/mame/misc/atronic.cpp
index 6ab24871532fb..d850771bfcdcc 100644
--- a/src/mame/misc/atronic.cpp
+++ b/src/mame/misc/atronic.cpp
@@ -1,6 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
-/* Atronic Video Fruit Machines */
+
+// Atronic Video Slot Machines
/*
From 1999? (documentation is dated August 99)
@@ -134,7 +135,7 @@ KKC - King Kong Cash, DDTE - ??):
There was PC software with these too, I think they're meant to connect to a PC for configuration?
I've put what there was in an ISO, and converted it to a CHD for later inspection.
- Some of these are probably bad dumps (the ones with strange sized roms, castawaya, tajmahal, maybe magimush)
+ Some of these are probably bad dumps (the ones with strange sized ROMs, castawaya, tajmahal, maybe magimush)
Anybody is welcome to try and figure out what this is.
@@ -436,14 +437,17 @@ Markings bottom: 6 470.5020 00.07
*/
#include "emu.h"
-#include "cpu/z180/z180.h"
+
#include "cpu/tms34010/tms34010.h"
+#include "cpu/z180/z180.h"
#include "machine/ds1386.h"
#include "machine/pcf8584.h"
#include "machine/z80scc.h"
+#include "video/ramdac.h"
+
#include "emupal.h"
#include "screen.h"
-#include "video/ramdac.h"
+
namespace {
@@ -463,6 +467,14 @@ class atronic_state : public driver_device
void atronic(machine_config &config);
private:
+ required_device m_screen;
+ required_device m_palette;
+ required_device m_maincpu;
+ required_device m_videocpu;
+ required_device m_ramdac;
+
+ required_shared_ptr m_vidram;
+
[[maybe_unused]] u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
u8 serial_r();
@@ -475,22 +487,13 @@ class atronic_state : public driver_device
void ramdac_map(address_map &map) ATTR_COLD;
- // devices
- required_device m_screen;
- required_device m_palette;
- required_device m_maincpu;
- required_device m_videocpu;
- required_device m_ramdac;
-
- required_shared_ptr m_vidram;
-
TMS340X0_TO_SHIFTREG_CB_MEMBER(to_shiftreg);
TMS340X0_FROM_SHIFTREG_CB_MEMBER(from_shiftreg);
TMS340X0_SCANLINE_RGB32_CB_MEMBER(scanline_update);
};
-u32 atronic_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
+u32 atronic_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -546,7 +549,7 @@ TMS340X0_FROM_SHIFTREG_CB_MEMBER(atronic_state::from_shiftreg)
TMS340X0_SCANLINE_RGB32_CB_MEMBER(atronic_state::scanline_update)
{
uint32_t fulladdr = ((params->rowaddr << 16) | params->coladdr) >> 5;
- uint32_t const *const bg0_base = &m_vidram[(fulladdr & 0x7fe00)]; // this probably isn't screen ram, but some temp gfx are copied on startup
+ uint32_t const *const bg0_base = &m_vidram[(fulladdr & 0x7fe00)]; // this probably isn't screen RAM, but some temp gfx are copied on startup
uint32_t *const dst = &bitmap.pix(scanline);
int coladdr = fulladdr & 0x1ff;
const pen_t *pens = m_palette->pens();
@@ -573,9 +576,6 @@ void atronic_state::video_map(address_map &map)
}
-#define VIDEO_CLOCK XTAL(40'000'000)
-#define PIXEL_CLOCK XTAL(25'000'000)
-
// CPU BOARD
// OSC1: 18.432MHz
@@ -590,7 +590,7 @@ void atronic_state::ramdac_map(address_map &map)
void atronic_state::atronic(machine_config &config)
{
- /* basic machine hardware */
+ // basic machine hardware
Z80180(config, m_maincpu, 18.432_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &atronic_state::atronic_map);
m_maincpu->set_addrmap(AS_IO, &atronic_state::atronic_portmap);
@@ -603,17 +603,17 @@ void atronic_state::atronic(machine_config &config)
SCC85C30(config, "scc", 5000000);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(VIDEO_CLOCK/2, 640, 0, 512, 257, 0, 224); // ??
+ m_screen->set_raw(40_MHz_XTAL / 2, 640, 0, 512, 257, 0, 224); // ??
m_screen->set_screen_update("tms", FUNC(tms34020_device::tms340x0_rgb32));
PALETTE(config, "palette").set_entries(256);
RAMDAC(config, m_ramdac, 0, m_palette);
m_ramdac->set_addrmap(0, &atronic_state::ramdac_map);
- TMS34020(config, m_videocpu, VIDEO_CLOCK);
+ TMS34020(config, m_videocpu, 40_MHz_XTAL);
m_videocpu->set_addrmap(AS_PROGRAM, &atronic_state::video_map);
m_videocpu->set_halt_on_reset(false);
- m_videocpu->set_pixel_clock(PIXEL_CLOCK/4);
+ m_videocpu->set_pixel_clock(25_MHz_XTAL / 4);
m_videocpu->set_pixels_per_clock(4);
m_videocpu->set_scanline_rgb32_callback(FUNC(atronic_state::scanline_update));
m_videocpu->set_shiftreg_in_callback(FUNC(atronic_state::to_shiftreg));
@@ -622,42 +622,63 @@ void atronic_state::atronic(machine_config &config)
ROM_START( atronic )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "atronic u2.bin", 0x0000, 0x080000, CRC(ddcfa9ed) SHA1(008ffaf56ccdb3eb60fa5a0ad2f14d1988c2fa5a) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "atronic u2.bin", 0x000000, 0x080000, CRC(ddcfa9ed) SHA1(008ffaf56ccdb3eb60fa5a0ad2f14d1988c2fa5a) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "atronic u6.bin", 0x0000, 0x020000, CRC(9742b2d8) SHA1(9f5851c78f92055730b834de18f8dc7bd9b29a37) )
+ ROM_LOAD( "atronic u6.bin", 0x000000, 0x020000, CRC(9742b2d8) SHA1(9f5851c78f92055730b834de18f8dc7bd9b29a37) ) // VERSION=CK-RDW_-A-C
- ROM_REGION32_LE( 0x800000, "user1", ROMREGION_ERASE00 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION32_LE( 0x800000, "user1", ROMREGION_ERASE00 ) // TMS34020APCM-40 code (34020)
ROM_REGION( 0x400000, "u18u21",ROMREGION_ERASE00 ) // sound
ROM_REGION( 0x400000, "pals",ROMREGION_ERASE00 ) // pal (converted from JED)
- DISK_REGION( "cdrom" ) // some kind of PC based utlities for these games..
+ DISK_REGION( "cdrom" ) // some kind of PC based utilities for these games..
DISK_IMAGE_READONLY_OPTIONAL( "atronic", 0,SHA1(3335e9f8f67f1b176e043f078456d2b13178b7ef) )
ROM_END
+
ROM_START( atronica )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "atronic u2.bin", 0x0000, 0x080000, CRC(ddcfa9ed) SHA1(008ffaf56ccdb3eb60fa5a0ad2f14d1988c2fa5a) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "atronic u2.bin", 0x000000, 0x080000, CRC(ddcfa9ed) SHA1(008ffaf56ccdb3eb60fa5a0ad2f14d1988c2fa5a) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "atronic u6 std.bin", 0x0000, 0x020000, CRC(9ef7ae79) SHA1(3ed0ea056b23cee8829421c2369ff869b370ee80) )
+ ROM_LOAD( "atronic u6 std.bin", 0x000000, 0x020000, CRC(9ef7ae79) SHA1(3ed0ea056b23cee8829421c2369ff869b370ee80) ) // VERSION=CK-STD-A-A-STD_
- ROM_REGION32_LE( 0x800000, "user1", ROMREGION_ERASE00 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION32_LE( 0x800000, "user1", ROMREGION_ERASE00 ) // TMS34020APCM-40 code (34020)
ROM_REGION( 0x400000, "u18u21",ROMREGION_ERASE00 ) // sound
ROM_REGION( 0x400000, "pals",ROMREGION_ERASE00 ) // pal (converted from JED)
ROM_END
+ROM_START( atronicb ) // assortment of setchips and config chips, needs verification
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "atronic reset cl", 0x000000, 0x080000, CRC(b6fc07c6) SHA1(9921cf9d9e95034d0353e9e72e4879449a261e21) )
+ ROM_LOAD( "demo mode 4meg", 0x000000, 0x080000, CRC(79c31e59) SHA1(9e0f2ea4e8a6bce9840a70608bd4db2edbd01ef7) )
+ ROM_LOAD( "masterreset.040", 0x000000, 0x080000, CRC(e6e58b97) SHA1(3250211255a280ff018e6c5912878d01fa3cfaff) )
+
+ ROM_REGION( 0x020000, "u6", 0 ) // config?
+ ROM_LOAD( "atronic config key cl u2", 0x000000, 0x020000, CRC(062a7ee9) SHA1(562df047fcba0b9e2a26c7935cef5dade5b3f946) ) // VERSION=CK-ARI_-A-B
+ ROM_LOAD( "atronic ram clear", 0x000000, 0x020000, CRC(61fe0ce0) SHA1(682d4a99f777f7b7dd77fcc739a1f752ed602aa1) )
+ ROM_LOAD( "u6 ck-rdw_-a-a", 0x000000, 0x020000, CRC(edff62cb) SHA1(9be8351e32f3e095abc0f304fe1609770890b833) ) // VERSION=CK-RDW_-A-A
+ ROM_LOAD( "u6 ck-rdw_-a-b", 0x000000, 0x020000, CRC(15bd42ec) SHA1(ff0bb157bf5d477befc71de11ff2a866cdbaecdf) ) // VERSION=CK-RDW_-A-B
+
+ ROM_REGION32_LE( 0x800000, "user1", ROMREGION_ERASE00 ) // TMS34020APCM-40 code (34020)
+ ROM_REGION( 0x400000, "u18u21",ROMREGION_ERASE00 ) // sound
+
+ ROM_REGION( 0x400000, "pals",ROMREGION_ERASE00 ) // pal (converted from JED)
+ ROM_LOAD( "galu35.bin", 0x000000, 0x0002e5, CRC(c81159c9) SHA1(36222e0a72310986fd4a76c0677a6bd74a0ad7df) )
+ROM_END
+
+// Atlantica (Russia) (set 1)
ROM_START( atlantca )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2.8 o-atla01-abaaa-ca-rus", 0x0000, 0x100000, CRC(c3f2aa47) SHA1(eda0088bfaea7a9a341dd63ae587c989742c6630) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2.8 o-atla01-abaaa-ca-rus", 0x000000, 0x100000, CRC(c3f2aa47) SHA1(eda0088bfaea7a9a341dd63ae587c989742c6630) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6.1 atla01-a-zb-std-5-xx-xx-axx", 0x0000, 0x020000, CRC(5d09a4bf) SHA1(94aea5396a968ff659ac9e2f4879262c55eba2fe) )
+ ROM_LOAD( "u6.1 atla01-a-zb-std-5-xx-xx-axx", 0x000000, 0x020000, CRC(5d09a4bf) SHA1(94aea5396a968ff659ac9e2f4879262c55eba2fe) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
ROM_LOAD32_BYTE( "u9.8 atla01-a-e-std-5", 0x000000, 0x100000, CRC(7f8210fa) SHA1(f71faee0d606c6aa06287f6ea31f41727e2a22d9) )
ROM_LOAD32_BYTE( "u11.8 atla01-a-e-std-5", 0x000001, 0x100000, CRC(af648717) SHA1(8ab57dc9962ed47a8beb03dcfc686c57de326793) )
ROM_LOAD32_BYTE( "u13.8 atla01-a-e-std-5", 0x000002, 0x100000, CRC(6e89bf2b) SHA1(0c3346a5da6c67bf2ef38cf657860dccb03a0461) )
@@ -674,18 +695,19 @@ ROM_START( atlantca )
ROM_LOAD( "u21.8 atla01-aa-a-std", 0x300000, 0x100000, CRC(a1bcd0a3) SHA1(0fd66c3bda92cead9457c35ce4b39f97293bb119) )
ROM_REGION( 0x400000, "pals", 0 ) // pal (converted from JED)
- ROM_LOAD( "atlantica.bin", 0x0000, 0x0002dd, CRC(c3fdcd7d) SHA1(b56c859689e44689474142e537951c1cef40e46b) )
+ ROM_LOAD( "atlantica.bin", 0x000000, 0x0002dd, CRC(c3fdcd7d) SHA1(b56c859689e44689474142e537951c1cef40e46b) )
ROM_END
+// Atlantica (Russia) (set 2)
ROM_START( atlantcaa )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(e4553537) SHA1(c61e708511c7790f7d7a7955378b8ceb975c2c55) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(e4553537) SHA1(c61e708511c7790f7d7a7955378b8ceb975c2c55) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6.1 atla01-a-zb-std-5-xx-xx-axx", 0x0000, 0x020000, CRC(5d09a4bf) SHA1(94aea5396a968ff659ac9e2f4879262c55eba2fe) )
+ ROM_LOAD( "u6.1 atla01-a-zb-std-5-xx-xx-axx", 0x000000, 0x020000, CRC(5d09a4bf) SHA1(94aea5396a968ff659ac9e2f4879262c55eba2fe) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(1c51f9e1) SHA1(9300c80409f28ba55b94b93a3359fac732262b27) )
ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(b2b1f41f) SHA1(7551c7acc5c6c26b672e4a42d847ec9af79b50fe) )
ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(515820fa) SHA1(2f5def7145b45f8cd63d5463880a548e58e2b2d3) )
@@ -702,19 +724,45 @@ ROM_START( atlantcaa )
ROM_LOAD( "u21.8 atla01-aa-a-std", 0x300000, 0x100000, CRC(a1bcd0a3) SHA1(0fd66c3bda92cead9457c35ce4b39f97293bb119) )
ROM_REGION( 0x400000, "pals", 0 ) // pal (converted from JED)
- ROM_LOAD( "atlantica.bin", 0x0000, 0x0002dd, CRC(c3fdcd7d) SHA1(b56c859689e44689474142e537951c1cef40e46b) )
+ ROM_LOAD( "atlantica.bin", 0x000000, 0x0002dd, CRC(c3fdcd7d) SHA1(b56c859689e44689474142e537951c1cef40e46b) )
ROM_END
-
+// Babooshka
ROM_START( baboshka )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(6084ca88) SHA1(608a23b4567271c89ed6a6b9e9a4999699a7b7a0) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "babooshka_u2_1a73.u2", 0x000000, 0x100000, CRC(b49d4c44) SHA1(fe533d6dbff95b4600ea1e68345097e1ae3d418d) )
+
+ ROM_REGION( 0x020000, "u6", 0 ) // config?
+ ROM_LOAD( "babooshka_u6_f4ab.u6", 0x000000, 0x020000, CRC(8b0ccfd2) SHA1(abdc59ebddc9e4fc3aa5b723a746de1419f7d6e7) )
+
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "babooshka_u9_2830.u9", 0x000000, 0x100000, CRC(bbd0c880) SHA1(d249f701de2639f58aea35f4a19949708fa01f5e) )
+ ROM_LOAD32_BYTE( "babooshka_u11_03bb.u11", 0x000001, 0x100000, CRC(3ac1eea2) SHA1(b43a1c93af1b8cfb13e5f9088308676ed17abbcc) )
+ ROM_LOAD32_BYTE( "babooshka_u13_ed0c.u13", 0x000002, 0x100000, CRC(ece10619) SHA1(329dd7e64d84cd8d803fb6ec25f7ee4c65d3d1eb) )
+ ROM_LOAD32_BYTE( "babooshka_u15_a406.u15", 0x000003, 0x100000, CRC(c5540973) SHA1(23e9faec39fefebc211c15444fdeb940f70344b2) )
+ ROM_LOAD32_BYTE( "babooshka_u8_15d7.u8", 0x400000, 0x100000, CRC(d2bf54a6) SHA1(8226343f81c382190bf8ba38142a474c47b72fe2) )
+ ROM_LOAD32_BYTE( "babooshka_u10_4868.u10", 0x400001, 0x100000, CRC(6e78855b) SHA1(1f1cee4ddeb58c854eb6e43191681e3dd7c0e377) )
+ ROM_LOAD32_BYTE( "babooshka_u12_7f1b.u12", 0x400002, 0x100000, CRC(404ad088) SHA1(3b8caf927d36fccdbda53450a98cbd1b187094cc) )
+ ROM_LOAD32_BYTE( "babooshka_u14_c087.u14", 0x400003, 0x100000, CRC(46a2b520) SHA1(7684672e8775aca8eb586148f1917963ef33dc5c) )
+
+ ROM_REGION( 0x400000, "u18u21", 0 ) // sound
+ ROM_LOAD( "babooshka_u18_c845.u18", 0x000000, 0x100000, CRC(d26dfd1b) SHA1(7a1ddd4ac4429908997f14295d445586f2c9a26f) )
+ ROM_LOAD( "babooshka_u19_8015.u19", 0x000000, 0x100000, CRC(273c7212) SHA1(0689fd7e3862d01f258fba9773f460ea4803d0a3) )
+ ROM_LOAD( "babooshka_u20_7bc8.u20", 0x000000, 0x100000, CRC(a030de64) SHA1(fb3d73416e180dfc15c469eca499ee5060482f16) )
+ ROM_LOAD( "babooshka_u21_9532.u21", 0x000000, 0x100000, CRC(ef05d889) SHA1(431f3a057aff474221f64a2fdee35ca328db42de) )
+ROM_END
+
+
+// Babooshka (Russia)
+ROM_START( baboshkar )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(6084ca88) SHA1(608a23b4567271c89ed6a6b9e9a4999699a7b7a0) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(8b0ccfd2) SHA1(abdc59ebddc9e4fc3aa5b723a746de1419f7d6e7) )
+ ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(8b0ccfd2) SHA1(abdc59ebddc9e4fc3aa5b723a746de1419f7d6e7) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(1a5d8a4f) SHA1(ff8160f000ecb032831ef4320b686fdd37c19bc9) )
ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(713e18c9) SHA1(eb14213101c3ee09601bf01000631c3a2509e876) )
ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(dfbc8c2f) SHA1(1ae2dcd572fa5fc31be5cdb7d6de2bced06ff94e) )
@@ -725,359 +773,377 @@ ROM_START( baboshka )
ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(b6343ede) SHA1(d19b2dc79c7b95cf09759709b422fb78008f5c37) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(d26dfd1b) SHA1(7a1ddd4ac4429908997f14295d445586f2c9a26f) )
- ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(273c7212) SHA1(0689fd7e3862d01f258fba9773f460ea4803d0a3) )
- ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(a030de64) SHA1(fb3d73416e180dfc15c469eca499ee5060482f16) )
- ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(ef05d889) SHA1(431f3a057aff474221f64a2fdee35ca328db42de) )
+ ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(d26dfd1b) SHA1(7a1ddd4ac4429908997f14295d445586f2c9a26f) )
+ ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(273c7212) SHA1(0689fd7e3862d01f258fba9773f460ea4803d0a3) )
+ ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(a030de64) SHA1(fb3d73416e180dfc15c469eca499ee5060482f16) )
+ ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(ef05d889) SHA1(431f3a057aff474221f64a2fdee35ca328db42de) )
ROM_END
-ROM_START( cfblue )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2.bin", 0x0000, 0x100000, CRC(0b5035d0) SHA1(f77ce0d16da39c259c0f764c23c23d0313166612) )
+// Beach Patrol (Russia)
+ROM_START( beachpt )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u02_o_-wave-a-b-cb-rus_.bin", 0x000000, 0x100000, CRC(b26085fc) SHA1(19f350c46088b58438dfc234d4ac543105913286) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6.bin", 0x0000, 0x020000, CRC(63690e7e) SHA1(9dcb3d64bae03556875185ead23d9b911773f5bd) )
+ ROM_LOAD( "u06_crp5bs1a.bin", 0x000000, 0x020000, CRC(0db0531d) SHA1(391e41b2dcd38669dcc24e938e9838feee972559) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "u9.bin", 0x000000, 0x100000, CRC(d1c2ad08) SHA1(e53c7e91b2ab86e64f4ae753404aa86ae881becf) )
- ROM_LOAD32_BYTE( "u11.bin", 0x000001, 0x100000, CRC(42872aef) SHA1(54d7cf6a9f3d5d8b2b14fa381fd7b9db974525e1) )
- ROM_LOAD32_BYTE( "u13.bin", 0x000002, 0x100000, CRC(7da9415b) SHA1(aaa73465417dcf92838021b37cb412d52ccb4d85) )
- ROM_LOAD32_BYTE( "u15.bin", 0x000003, 0x100000, CRC(e0270268) SHA1(6bf5281eb5418903403873547690bdfa04597fea) )
- ROM_LOAD32_BYTE( "u8.bin", 0x400000, 0x100000, CRC(a870d32c) SHA1(0014b9b2a2b35ae8a10ed2910213ccea50f8ba61) )
- ROM_LOAD32_BYTE( "u10.bin", 0x400001, 0x100000, CRC(f99ae371) SHA1(b468a18eb7604f191198aae68e961db97cae0332) )
- ROM_LOAD32_BYTE( "u12.bin", 0x400002, 0x100000, CRC(2b2fcd96) SHA1(ce4a8d1267874e5d615e8b3abbb4d1b16630ae7a) )
- ROM_LOAD32_BYTE( "u14.bin", 0x400003, 0x100000, CRC(d66b735c) SHA1(6c4c1e5b5b21b60e950cf70d2d6ad72d5b22237a) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u09_bep5a01d.bin", 0x000000, 0x100000, CRC(0f4614de) SHA1(2181c552e9a3669fda5e87d0c596d5534d24d4b3) )
+ ROM_LOAD32_BYTE( "u11_bep5a01d.bin", 0x000001, 0x100000, CRC(4f8c6fee) SHA1(2b75fe948bddda899969ef4a7663a52dc7b0eb81) )
+ ROM_LOAD32_BYTE( "u13_bep5a01d.bin", 0x000002, 0x100000, CRC(ca9a24e5) SHA1(67276f680f3aedf480c54c666f0db1110cd77aee) )
+ ROM_LOAD32_BYTE( "u15_bep5a01d.bin", 0x000003, 0x100000, CRC(ac904dc8) SHA1(165f66423a9c9231baa4e8b2e465d7f10f61202d) )
+ ROM_LOAD32_BYTE( "u08_bep5a01d.bin", 0x400000, 0x100000, CRC(1f19cba6) SHA1(201975c7b440d2f53439e7383fb49b921015f22c) )
+ ROM_LOAD32_BYTE( "u10_bep5a01d.bin", 0x400001, 0x100000, CRC(940bb1b2) SHA1(a57d6e5d3872787ff1821cbc80032269b378ecf0) )
+ ROM_LOAD32_BYTE( "u12_bep5a01d.bin", 0x400002, 0x100000, CRC(07851214) SHA1(d088243f11ba51c79796986e99f0aa34d0d697d6) )
+ ROM_LOAD32_BYTE( "u14_bep5a01d.bin", 0x400003, 0x100000, CRC(16a5ce9c) SHA1(3551e6eb7ff34f9ea70b7e6e940044ea1b4c59bb) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18.bin", 0x0000, 0x100000, CRC(77d6c103) SHA1(667c4c77eeba3af9c8c772a9ffe2941f8f3df38f) )
- ROM_LOAD( "u19.bin", 0x0000, 0x100000, CRC(36371ef6) SHA1(83a454a71e01962937b23817419fe2e071f077ee) )
- ROM_LOAD( "u20.bin", 0x0000, 0x100000, CRC(d9548179) SHA1(12537373a6a3f79952d2c7c48d41e156fc578902) )
- ROM_LOAD( "u21.bin", 0x0000, 0x100000, CRC(3a620cc6) SHA1(1dced1a40c6b3d734ea463fe58bdd9ee9e3b8822) )
+ ROM_LOAD( "u18_bep_aa_a.bin", 0x000000, 0x100000, CRC(a0c6dafd) SHA1(9a09224b2d91cbf4efad5563a7633b973b0e5ce1) )
+ ROM_LOAD( "u19_bep_aa_a.bin", 0x000000, 0x100000, CRC(69f1f267) SHA1(4fa837bf285670ed26ed0f0dada5e2a54ca7f142) )
+ ROM_LOAD( "u20_bep_aa_a.bin", 0x000000, 0x100000, CRC(3dc030aa) SHA1(f01305fb187ae150b1264e8b72439e638772fbcc) )
+ ROM_LOAD( "u21_bep_aa_a.bin", 0x000000, 0x100000, CRC(791c809a) SHA1(68af52cb2032a0c3f76030681baaaac8fb0bf51b) )
ROM_END
-ROM_START( cfbluea )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(4ee3805e) SHA1(45d9438a26230f50013feda1b2c68ab2f8d4f419) )
+
+// Beetlemania
+ROM_START( atrbtlma )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "mu2.080", 0x000000, 0x100000, CRC(689901a5) SHA1(be9b1f799c108259d0f5c0e9e423b316bb390baf) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(0db0531d) SHA1(391e41b2dcd38669dcc24e938e9838feee972559) )
- ROM_LOAD( "u6low-10.bin", 0x0000, 0x020000, CRC(3cbad206) SHA1(d2a468d5bfd441b74ef85be088873d1f74d5c66e) )
+ ROM_LOAD( "mu6.010", 0x000000, 0x020000, CRC(1912e0df) SHA1(3e864b5535bb24793d491e8ee74973f7612a3308) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(37b3a499) SHA1(eb3252185596dd513d3cce95f3425241ca8513ab) )
- ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(d98b2b1d) SHA1(414d300d113e9737d63efea09b358aeb8eeed7fc) )
- ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(478bb4a5) SHA1(94304fe1477bfc66e8dcf2c2c91226754cb8c32a) )
- ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(cfe9e4d4) SHA1(8cd4aadd885fc5500b0a2c1e41b1f096bd4cd2b5) )
- ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(39670383) SHA1(cd78289377c75497f96dd6b76dc717b2ddc8d9c6) )
- ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(f9d054ae) SHA1(244733f7ee6e82fef5d0245c3fd947d369b296f9) )
- ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(5e95768f) SHA1(ba616bf41a2bb205d366e19e773ee5f0009be212) )
- ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(89aaf76b) SHA1(6e731ba815c20b184e44495dd2231d9ae315a146) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u9.080", 0x000000, 0x100000, CRC(d3458270) SHA1(afb17ee1e568f66ac95c17afd3ae403019531caf) )
+ ROM_LOAD32_BYTE( "u11.080", 0x000001, 0x100000, CRC(5a1ee58b) SHA1(8fb81a4e4d5bdd3892db33ad044137f2a43f877a) )
+ ROM_LOAD32_BYTE( "u13.080", 0x000002, 0x100000, CRC(1948f27c) SHA1(414e6c507513524aa559c6cb2970f3b2d27b72a0) )
+ ROM_LOAD32_BYTE( "u15.080", 0x000003, 0x100000, CRC(d1e734d8) SHA1(3b8fd88f9318ce8adc70dce93b20191f61cb0c45) )
+ ROM_LOAD32_BYTE( "u8.080", 0x400000, 0x100000, CRC(075df52c) SHA1(4abd6d1080d93306fc4a741501255f56f24bef59) )
+ ROM_LOAD32_BYTE( "u10.080", 0x400001, 0x100000, CRC(5eb6d001) SHA1(ae03e247995e83e355b37e477316654d157a15b6) )
+ ROM_LOAD32_BYTE( "u12.080", 0x400002, 0x100000, CRC(d6a7df27) SHA1(0798de5f3676d56623933489a777795cd839a348) )
+ ROM_LOAD32_BYTE( "u14.080", 0x400003, 0x100000, CRC(8c5a9df5) SHA1(81cfa3a548dc16b2e996b7e416abd43aa6f11e5f) )
- ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(77d6c103) SHA1(667c4c77eeba3af9c8c772a9ffe2941f8f3df38f) )
- ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(36371ef6) SHA1(83a454a71e01962937b23817419fe2e071f077ee) )
- ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(d9548179) SHA1(12537373a6a3f79952d2c7c48d41e156fc578902) )
- ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(3a620cc6) SHA1(1dced1a40c6b3d734ea463fe58bdd9ee9e3b8822) )
+ // sound (missing or not needed here)
+
+ ROM_REGION( 0x400000, "pals", 0 ) // pal (converted from JED)
+ ROM_LOAD( "galu35.bin", 0x000000, 0x0002e5, CRC(c81159c9) SHA1(36222e0a72310986fd4a76c0677a6bd74a0ad7df) )
ROM_END
-ROM_START( cfgreen )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(2afda383) SHA1(8a1d1a780f710119cbf7ee6a53d5de91cfe120c2) )
+// Beetles Unplugged (Russia)
+ROM_START( beetleup )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u02_0-beet-a-a-cc.0def.bin", 0x000000, 0x100000, CRC(b5eedf40) SHA1(40a9baac99e9844cef5d3922c853f5e4903a7833) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(3cbad206) SHA1(d2a468d5bfd441b74ef85be088873d1f74d5c66e) )
+ ROM_LOAD( "u06_n5b0-a-04-b.65aa.bin", 0x000000, 0x020000, CRC(d68d08e4) SHA1(548577d43f4136cf16266fe6855898a30fa49965) )
+ ROM_LOAD( "u06_n5b0-a-05-b.648f.bin", 0x000000, 0x020000, CRC(2d2ff35f) SHA1(97759fbad4b6b30ca8f8ea74da74cfaa433a7fa2) )
+ ROM_LOAD( "u06_n5b0-a-06-b.64 56.bin", 0x000000, 0x020000, CRC(7b4a6a97) SHA1(e3d54476730ca34a9f7214219cf991a220e15d5c) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(19a47a1b) SHA1(ae9ad2027fddf96062833345a5e2b9e7101b3380) )
- ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(7d805f07) SHA1(0bb27a702e45d3d660363ac75c0f52f07248d40a) )
- ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(104110dc) SHA1(9322598a94e3c71f546da3b42f137a22fc78a894) )
- ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(c752e5b1) SHA1(98832603529c99d83885a9b72bf30aa5eb1eee93) )
- ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(63e91841) SHA1(a9644b4ed37c2143273e782bd0e85906466c1173) )
- ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(b198a826) SHA1(361f9a055633831f45b148ca5e23cbb9be97c95f) )
- ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(9eb176c4) SHA1(73dea223338235a3ebd224c210df4923dbb01b56) )
- ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(ad654d75) SHA1(31804c2fae178b2614759542cba1af34b82e5f12) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u09_7b88.bin", 0x000000, 0x100000, CRC(8443972b) SHA1(5f2eea84ba18a83502f36eeaa52cff49a1631668) )
+ ROM_LOAD32_BYTE( "u11_1957.bin", 0x000001, 0x100000, CRC(36c7e5c5) SHA1(2bad0bb6b363af6a37f5b11c7ca8b3b674df4072) )
+ ROM_LOAD32_BYTE( "u13_b661.bin", 0x000002, 0x100000, CRC(0e74726c) SHA1(3103d801a622315877fc09d9c99290b54b266885) )
+ ROM_LOAD32_BYTE( "u15_fd57.bin", 0x000003, 0x100000, CRC(9eabc514) SHA1(ed89b068b381ad4e007352bddf3aebe10ebebf4a) )
+ ROM_LOAD32_BYTE( "u08_5804.bin", 0x400000, 0x100000, CRC(65a020e3) SHA1(2bb781905338e2d444222095d8430137632fae3d) )
+ ROM_LOAD32_BYTE( "u10_647c.bin", 0x400001, 0x100000, CRC(c46c064d) SHA1(6181cf0e1d53f0a79c266b4f87d3b0c32313c593) )
+ ROM_LOAD32_BYTE( "u12_07f3.bin", 0x400002, 0x100000, CRC(cefdfdad) SHA1(2032e0942f52d025f8da225c31ca7f7121c7b7f8) )
+ ROM_LOAD32_BYTE( "u14_fe27.bin", 0x400003, 0x100000, CRC(50cfd898) SHA1(8b881ae8c60f215bb0f75e14493ee4a0c9f2b364) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(40a74e38) SHA1(6ea3458c449434353bbc7d03bbd7a83294584603) )
- ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(6769a6c2) SHA1(5eddf6a86897b39a6c75462b5047d5175b543b18) )
- ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(9c3288a0) SHA1(feb3b9fefd38052a5fd2fcee6a653c6043ff1759) )
- ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(71367522) SHA1(0d82940ff87396e8722f8250cd4961d11dfa46a0) )
+ ROM_LOAD( "u18_f978.bin", 0x000000, 0x100000, CRC(afa9a1a8) SHA1(a06bdd776ca7ba9e9ceecc0935761e6d88cad90e) )
+ ROM_LOAD( "u19_8766.bin", 0x000000, 0x100000, CRC(f63ed18c) SHA1(59d05582bbd125009a6bc226ec0ef2120c768694) )
+ ROM_LOAD( "u20_26f0.bin", 0x000000, 0x100000, CRC(39f8e6d9) SHA1(59cd29d08610f601e3228364ae52a4e49e325f40) )
+ ROM_LOAD( "u21_ea59.bin", 0x000000, 0x100000, CRC(0bd2f188) SHA1(f29a67c3cd36e7ee6fd7ef72a7724dc9df5b5657) )
ROM_END
-ROM_START( chicken )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(51430fa1) SHA1(cb4357cc0b5c05704c984c9ab373201612f7d340) )
+// Big Blue (Russia)
+ROM_START( bigblue )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "o_-bbbu01-adbaa-cb-std_.8mu02.bin", 0x000000, 0x100000, CRC(62d08d90) SHA1(fa563dd59eacd3021744863245aa7f82dea2c266) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(bac68023) SHA1(fdc5d540ceb4a2d44013dfd59b46103ec6745dea) )
+ ROM_LOAD( "big blue bags.bin", 0x000000, 0x020000, CRC(4ec3fc1c) SHA1(7a081d370c54a6ea333957958b1341560458e845) )
+ ROM_LOAD( "bbbu01-c-za-std_-5-xx-xx-axx.1mu06.bin", 0x000000, 0x020000, CRC(09e6df0b) SHA1(85961160f95cb8d223f73483d6edad79fa37d729) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(1109b7d6) SHA1(c0f6f5d56ee95982688b595894a2985ef53629e7) )
- ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(5a1449f6) SHA1(3903858239223c37615f12a8db6a8e873722e34c) )
- ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(e1081c7a) SHA1(dd6390d64cda9af93093092361ca24b551d82549) )
- ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(2f3930db) SHA1(6dbc3b4c3d43fc6ecec6082dbb1e1d29df43d50e) )
- ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(d560038c) SHA1(dece84d3e0691d53806382091dfd540dee1a3cdf) )
- ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(5c6c3a8d) SHA1(43be71f50318d12e4d55b9e1df34b0bfdb719fdf) )
- ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(a5a119e2) SHA1(decac8c7cea764224ed7e2da8af4f551f99739e6) )
- ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(9008b8b3) SHA1(b4dd717f46018a7005eff5dc6655d3d473311c16) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu09.bin", 0x000000, 0x100000, CRC(6f11b908) SHA1(663382bc295615afbc3a9a39c7089470b8b55926) )
+ ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu11.bin", 0x000001, 0x100000, CRC(4cddcb5a) SHA1(e23354ab36f814b22c39564111558d4935fe8d70) )
+ ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu13.bin", 0x000002, 0x100000, CRC(3a6dd649) SHA1(0f2b6cdf4f10ded99adc4fe0b47e4fada4aa6643) )
+ ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu15.bin", 0x000003, 0x100000, CRC(2efd2269) SHA1(3923ec31e245c29786cd67a89d582bc051967580) )
+ ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu08.bin", 0x400000, 0x100000, CRC(32f01864) SHA1(f515cfa2ecdc239b441f6f5f7033516e88030ad6) )
+ ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu10.bin", 0x400001, 0x100000, CRC(97efddfd) SHA1(1303733596b725b705fa9dfd4150b4a6df9d4172) )
+ ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu12.bin", 0x400002, 0x100000, CRC(36c4f212) SHA1(1e7ea33114f1ca836849242d717023b1315a466e) )
+ ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu14.bin", 0x400003, 0x100000, CRC(bde8af9e) SHA1(095e567d35c45ae5e377cdf07ab77f6781e39cca) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(12c922c1) SHA1(d463328a203667dad42a7cbfb6853289095fa4c9) )
- ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(5e9c8810) SHA1(711c85a81dc61290fc43b56ccd955b4e46caee32) )
- ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(4ce349e4) SHA1(4499e570211aeed44db93a7c3b7b5d0b4390b0ca) )
- ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(6c7343cf) SHA1(28c282857f0c29198865444061fcf37e84697cf7) )
+ ROM_LOAD( "bbbu01-ba-a-std_-_.8su18.bin", 0x000000, 0x100000, CRC(451687c9) SHA1(5165586a7ab69529396e4b387002e1dcbe3d892d) )
+ ROM_LOAD( "bbbu01-ba-a-std_-_.8su19.bin", 0x000000, 0x100000, CRC(bb0029ec) SHA1(ab460d40ee46ee43b195b7a2ece42bcaaa043892) )
+ ROM_LOAD( "bbbu01-ba-a-std_-_.8su20.bin", 0x000000, 0x100000, CRC(fb1bd294) SHA1(78dcaffc56f56d2b31d0c20d48d91696910be160) )
+ ROM_LOAD( "bbbu01-ba-a-std_-_.8su21.bin", 0x000000, 0x100000, CRC(ec6d68ea) SHA1(91167b6379a6e1748e635c4b2b603a39fb6b049d) )
ROM_END
-ROM_START( aclown )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(162915c4) SHA1(333d2ac8323eaaa0c7b85804b7d4ceef347118d1) )
+// Bonus Poker
+ROM_START( atrbonpk )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "mb-u2.bin", 0x000000, 0x80000, CRC(7f9d9d3c) SHA1(501d3f1482b3c67cbc94a3af40ef31fb5a6e7921) )
- ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(ab86b3d4) SHA1(b0d32887674f971a3ccd482775ec3f978a2ea0c1) )
+ ROM_REGION( 0x080000, "u6", 0 ) // config?
+ ROM_LOAD( "mb-u6.bin", 0x000000, 0x080000, CRC(0b8d47ba) SHA1(aa1d5b37c330f4f44c1af5caca24bbf670c0bbcb) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(8bcbb27f) SHA1(d953268213580af11a2cc0dbd8bf1652f97f3929) )
- ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(73fb3169) SHA1(8bbe5d8b8898e2d3368506e7b66d05b8f8ac7d02) )
- ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(47580998) SHA1(37a6e409618aa3fe7d24bd3580fa93269895b059) )
- ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(948e3737) SHA1(43225f114a3ae66caf95821a1e8a01f1a129e38d) )
- ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(b4607b04) SHA1(81eff1246c68017e123fbfa46b4b8234808727d7) )
- ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(df875d3b) SHA1(262ec7db996f13fa32d17c1c5d0c89c2f98ca1cc) )
- ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(dbab3a76) SHA1(a85b76ade2d410cbbee7a62de96bed333ce23dc3) )
- ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(f3a6bbd5) SHA1(5a9e81ee9ce533b3ab1aeaa4ca9185f5bf0b2a65) )
+ ROM_REGION( 0x2e5, "mbpals", 0 )
+ ROM_LOAD( "mb-u22-d.bin", 0x000, 0x117, CRC(dc097847) SHA1(305294284d0ffd578f9115b836ef1f9e906c1599) )
+ ROM_LOAD( "mb-u32-i.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8))
+ ROM_LOAD( "mb-u35-poke-s6366.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) )
- ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(c3efd917) SHA1(7f675c27d616a489c22544e98f726a62cfcb1bdf) )
- ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(a6e90bbf) SHA1(4aa4746b3d474caf653396171b42b56a3e16caa3) )
- ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(fef1ae8e) SHA1(efc5c289be052c56b5cb7976da25bd5bfacd97fc) )
- ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(47108677) SHA1(864f767c54c0f9ff63fad3829e828abbd5e84f0b) )
-ROM_END
+ ROM_REGION( 0x117, "gfxpals", 0 )
+ ROM_LOAD( "u2-f.bin", 0x000, 0x117, CRC(eb5548c2) SHA1(7ccc6a7de0c0765e0da3563f3ee83dd99acc50bf) )
+ ROM_LOAD( "u3-i.bin", 0x000, 0x117, CRC(769f7b32) SHA1(72df7c92367403a95c5bda3d6a643cc8fc24e153) )
+ ROM_LOAD( "u4-c.bin", 0x000, 0x117, CRC(91e043ea) SHA1(d4d0c721c6c37cbe8babe148bc9887038cdf4820) )
+ ROM_LOAD( "u5-a.bin", 0x000, 0x117, CRC(18ffc746) SHA1(e32dd74fb535fd4a754579173a788712b3e6ec30) )
+ ROM_LOAD( "u6-b.bin", 0x000, 0x117, CRC(2750fb0a) SHA1(3814c4755a215073425a9d6bb048315498962c76) )
+ ROM_LOAD( "u7-a.bin", 0x000, 0x117, CRC(adcb2789) SHA1(cc2ebd69abec73d66665faaec19b8706e539b34c) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u9.bin", 0x400000, 0x080000, CRC(5b8450f1) SHA1(27fc771c3fb824cdb845237324984778fcd0a737) )
+ ROM_LOAD32_BYTE( "u11.bin", 0x400001, 0x080000, CRC(c8c52bd1) SHA1(081b8b4c46f18d030329bf519a8ed50385f7c062) )
+ ROM_LOAD32_BYTE( "u13.bin", 0x400002, 0x080000, CRC(23164a85) SHA1(e6de6aac28f1dac9ea908aaab9760b56ded1bb91) )
+ ROM_LOAD32_BYTE( "u15.bin", 0x400003, 0x080000, CRC(aabbb4ff) SHA1(4a13475929141a4824b15347873cf330f7f7b0d0) )
+ ROM_LOAD32_BYTE( "u8.bin", 0x600000, 0x080000, CRC(d6dfde87) SHA1(f3221adecb67ee593d52a1bbbdcee78dde497dbd) )
+ ROM_LOAD32_BYTE( "u10.bin", 0x600001, 0x080000, CRC(d81a1f77) SHA1(c3ec3a06dacc3f528c9bcfa7a18e25e0126b1d85) )
+ ROM_LOAD32_BYTE( "u12.bin", 0x600002, 0x080000, CRC(4b24dc03) SHA1(f875f09c6d44821b169e111cb1ea3d9716746d5f) )
+ ROM_LOAD32_BYTE( "u14.bin", 0x600003, 0x080000, CRC(a6dc78ff) SHA1(96457601e7f90ce14a88765f70accc07d7236d30) )
+
+ // no dedicated sound ROM board present in cage, missing or not needed here? there is an OKI M6585 on the mainboard
+ROM_END
-ROM_START( goldglen )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(94c48e59) SHA1(b660d81f1659004e08df402ef9da61a1f4818b48) )
+// Castaway (Russia) (set 1)
+ROM_START( castaway )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2.8 o-cast-b-a-cc", 0x000000, 0x100000, CRC(8f103bb3) SHA1(65596aff9cfb2345a36a0e2a2b03a2b4310d421c) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(94409a39) SHA1(99af058e48147fc75a8c23e4f1a28484f3d5f625) )
+ ROM_LOAD( "u6.1 c5bo-a-03-a", 0x000000, 0x020000, CRC(3917302a) SHA1(39b0672c36554712825a0e310522933be4b46d84) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(01e69d2d) SHA1(a6e6974aec52931aeeb1f90d8f917ab85ebe843e) )
- ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(6c39a180) SHA1(95f91ec10961d36c86dee5ce42fc7c8ab693e271) )
- ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(e60a093f) SHA1(fa0af661f869f80e11097e101ec6100a75d1e63f) )
- ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(9877e8aa) SHA1(2073d451446709d92700cf4afb68e5b04580c620) )
- ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(631d617c) SHA1(44cbd9a8275537f2f8804b1d17645f74cd12fdb1) )
- ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(cdd5e435) SHA1(659b29ab16d5a3878e4984599e83f8d1cf377ca7) )
- ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(dcb50d70) SHA1(7f8c36d5dea9c3ce61c31aef7b310f546095d72e) )
- ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(6c0277b1) SHA1(266c6eb08cb3d9e49cf397a7e01785627892200e) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u9.8 cw5_b-03-b", 0x000000, 0x100000, CRC(c49aaf25) SHA1(5518312046208b4f912e9dee2ff24653a9976c6f) )
+ ROM_LOAD32_BYTE( "u11.8 cw5_b-03-b", 0x000001, 0x100000, CRC(24267b4b) SHA1(9103923dd1bba0b01f6020f7c357ac9b7bef4951) )
+ ROM_LOAD32_BYTE( "u13.8 cw5_b-03-b", 0x000002, 0x100000, CRC(3e606516) SHA1(5edad0a3099700bfeedff5a143591a85b3c4f582) )
+ ROM_LOAD32_BYTE( "u15.8 cw5_b-03-b", 0x000003, 0x100000, CRC(7211abc5) SHA1(acaa9ad55abeb34e2d97b419f5213e44e80adde0) )
+ ROM_LOAD32_BYTE( "u8.8 cw5_b-03-b", 0x400000, 0x100000, CRC(03839c9e) SHA1(56ad8843192ca47c1d467c69ab2d13189a19a905) )
+ ROM_LOAD32_BYTE( "u10.8 cw5_b-03-b", 0x400001, 0x100000, CRC(cbe7399e) SHA1(da829dcab116b48a56526750546287e33d3de3c7) )
+ ROM_LOAD32_BYTE( "u12.8 cw5_b-03-b", 0x400002, 0x100000, CRC(770e92de) SHA1(c358b0f528fc5c1efd2dd4a0563e958d90b55d64) )
+ ROM_LOAD32_BYTE( "u14.8 cw5_b-03-b", 0x400003, 0x100000, CRC(dadd0d0b) SHA1(87750c506f6429f382149d205849663b622abda3) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(2afed5cf) SHA1(633214458cd47666675464fb3621aaffbe0ca63a) )
- ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(70279081) SHA1(15933d81af85b2c6f831e765f2a4e4f0e44fdc18) )
- ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(0bcaa5b2) SHA1(c964b7ec99cfc641f91c1a483e68999fc3e23fa4) )
- ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(e2aad0ee) SHA1(2678ae011a820da644e78e0c5d2a6af39c35ac4d) )
+ ROM_LOAD( "u18.8 castaa_a", 0x000000, 0x100000, CRC(98b0a1f3) SHA1(2a6298a82dc549078857e43d60e692062b1cd022) )
+ ROM_LOAD( "u19.8 castaa_a", 0x000000, 0x100000, CRC(2c7aa4a4) SHA1(7e495ce9e18ae759e9ecf21f55c6bc7c7b06a92d) )
+ ROM_LOAD( "u20.8 castaa_a", 0x000000, 0x100000, CRC(cbb5824d) SHA1(626fd9c0f76942c7c040743519e2af867afed75a) )
+ ROM_LOAD( "u21.8 castaa_a", 0x000000, 0x100000, CRC(31554b6b) SHA1(6af8dc72e0fcec7f73b54b728f8c61a51f5f0d48) )
ROM_END
-ROM_START( iccash )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(27b1c41e) SHA1(55a24301578b2d4e46948362aab8bfbb2918169a) )
+// Castaway (Russia) (set 2)
+ROM_START( castawaya ) // bad dump? (ROMs all look incorrect size to me)
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u-2 m27c801.bin", 0x000000, 0x080000, CRC(55b61206) SHA1(abdbe887a6739dbc9f51838b31d23d3c8d8f03dd) )
- ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(5e7d8a05) SHA1(255355cf594c2818d358860e616b5b578a87e974) )
+ ROM_REGION( 0x080000, "u6", 0 ) // config?
+ ROM_LOAD( "u-6 m27c801.bin", 0x000000, 0x080000, CRC(86538b30) SHA1(6b8d732b59af2cc1a6524989f8cf12a4d4dac484) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(db77fe46) SHA1(2502c5c165a9720e5ff1196eaa17189281c3145c) )
- ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(3a512c6c) SHA1(ba8592773d71e57b3dc6aaff7df1214a57429b10) )
- ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(75fadda8) SHA1(5a968f10e582fbe74000f3de33dc1e2d07c3fec1) )
- ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(10e5a8e7) SHA1(e91de378c9485dce080d2d00a923e75f8be30f9a) )
- ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(0ac57377) SHA1(cbbac3434b5b46f30abe880990300bf0a0393557) )
- ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(03c67464) SHA1(d5a1e657140a31c3f77c6490bcf35075d0546b71) )
- ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(622992ef) SHA1(6a31212436dcda308f1f78abff714bbd97df71ef) )
- ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(ce62e7f9) SHA1(af9eeb7bdb76870e914f1233c9fd496d6c33a615) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ // seem to be half size, doesn't have the TMS vectors
+ ROM_LOAD32_BYTE( "u-9 m27c801.bin", 0x000000, 0x080000, BAD_DUMP CRC(4a5efe38) SHA1(23e82eeadccdd0224858686b1d96bd5d184904cb) )
+ ROM_LOAD32_BYTE( "u-11 m27c801.bin", 0x000001, 0x080000, BAD_DUMP CRC(099e27e2) SHA1(4419ac8090ccab673e61f4f73c837971e341e7e2) )
+ ROM_LOAD32_BYTE( "u-13 m27c801.bin", 0x000002, 0x080000, BAD_DUMP CRC(f65eb71f) SHA1(9e116cc2b6768c1525759735eecc05db5906f2dc) )
+ ROM_LOAD32_BYTE( "u-15 m27c801.bin", 0x000003, 0x080000, BAD_DUMP CRC(319c8bb6) SHA1(8de3c66b375f0ff200ff240765c6f37609c4935e) )
+ ROM_LOAD32_BYTE( "u-8 m27c801.bin", 0x400000, 0x080000, BAD_DUMP CRC(74e21aeb) SHA1(dce3b413c6efdc2d85357dd1f9e4e2808aef4f7e) )
+ ROM_LOAD32_BYTE( "u-10 m27c801.bin", 0x400001, 0x080000, BAD_DUMP CRC(45294960) SHA1(1b5b33ef730c44a4800e80891369d4e21e1729d2) )
+ ROM_LOAD32_BYTE( "u-12 m27c801.bin", 0x400002, 0x080000, BAD_DUMP CRC(be19a02c) SHA1(8968d4ec5ff58dcf50c3c9ac9601c6416399091d) )
+ ROM_LOAD32_BYTE( "u-14 m27c801.bin", 0x400003, 0x080000, BAD_DUMP CRC(cda73f12) SHA1(dd5556d7e19ef1a9fec1b914a7464fbc4f97effe) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(8e322415) SHA1(14685d1f426187d1fbe878713cd60ece177fdd1b) )
- ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(8ce5ba46) SHA1(012d8686291d9078be8a489e21180681ace06b8b) )
- ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(be59025d) SHA1(b64c707129c1418833c1b5601d0a194c2e29d9a8) )
- ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(d6b79eae) SHA1(a128adbca125f3811edc8c7042bf41b45dc61083) )
+ ROM_LOAD( "u-18 m27c801.bin", 0x000000, 0x080000, BAD_DUMP CRC(2e3d7181) SHA1(eed1a1594405f416efb379e134c12be89d495402) )
+ ROM_LOAD( "u-19 m27c801.bin", 0x000000, 0x080000, BAD_DUMP CRC(a3c906f6) SHA1(25314d79f420c177424bf1de492ba8d9a928f643) )
+ ROM_LOAD( "u-20 m27c801.bin", 0x000000, 0x080000, BAD_DUMP CRC(ec395eaa) SHA1(fa27b928971c039fb1586631f136bd7577be1c57) )
+ ROM_LOAD( "u-21 m27c801.bin", 0x000000, 0x080000, BAD_DUMP CRC(324d0539) SHA1(71639e3fc40c09e07221524580046dc2447b43f1) )
+
+ ROM_REGION( 0x400000, "others", 0 )
+ ROM_LOAD( "ds1225y.bin", 0x000000, 0x002000, CRC(76af0395) SHA1(ce6aef5349b155f8e103bb4dd33933c501a490ae) )
+ ROM_LOAD( "ds1386-32k.bin", 0x000000, 0x002000, CRC(4e28ebc9) SHA1(dfd60c53ffdd0b44b7f894e19b212bc88e81192f) )
ROM_END
-ROM_START( shpinxii )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(943d35a7) SHA1(17ead3a7f084b5e384f99903f57360ff9e133026) )
+// Chicken (Russia)
+ROM_START( chicken )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(51430fa1) SHA1(cb4357cc0b5c05704c984c9ab373201612f7d340) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(4d37999a) SHA1(678dc788cfe00ab2599df08941660324793d7f6c) )
- ROM_LOAD( "sphinx ii.bin", 0x0000, 0x020000, CRC(7fae09a6) SHA1(5c26798337d3691d81f853ee447cb7119fce7b14) )
+ ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(bac68023) SHA1(fdc5d540ceb4a2d44013dfd59b46103ec6745dea) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(c54e4e07) SHA1(1249494773dae044a7bb4381b084e3d2e14367d7) )
- ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(5c1e82ab) SHA1(f22ba1dc6799388e855d8f3064b96d568619a75b) )
- ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(fb49ae3e) SHA1(bf0cb5815639ebc3db3333249ab2ed81d3bdc684) )
- ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(ac741fb5) SHA1(a52eaa4a43cd522885d5d9b024c0646279dffe25) )
- ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(ca4c1626) SHA1(6a883f713272ea70fd0757f9d0e07379925973a3) )
- ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(b64deef1) SHA1(b3c4baef7137af5b25402cec474f92333d93e727) )
- ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(cf5a97b7) SHA1(6cb490a5a0c9e908593beff3aee374eddef19a5f) )
- ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(98730028) SHA1(86b782bea8caf33dab9656c93856fc345977f7cc) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(1109b7d6) SHA1(c0f6f5d56ee95982688b595894a2985ef53629e7) )
+ ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(5a1449f6) SHA1(3903858239223c37615f12a8db6a8e873722e34c) )
+ ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(e1081c7a) SHA1(dd6390d64cda9af93093092361ca24b551d82549) )
+ ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(2f3930db) SHA1(6dbc3b4c3d43fc6ecec6082dbb1e1d29df43d50e) )
+ ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(d560038c) SHA1(dece84d3e0691d53806382091dfd540dee1a3cdf) )
+ ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(5c6c3a8d) SHA1(43be71f50318d12e4d55b9e1df34b0bfdb719fdf) )
+ ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(a5a119e2) SHA1(decac8c7cea764224ed7e2da8af4f551f99739e6) )
+ ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(9008b8b3) SHA1(b4dd717f46018a7005eff5dc6655d3d473311c16) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(52da6133) SHA1(51ba2c586ffeddca1d8e345c644525cbccffdba8) )
- ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(3aed50bc) SHA1(c7abc91dbddf9bccac9cc9a5b73fbd9b22878ca9) )
- ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(0a8ac239) SHA1(7d58abaff09a7e61d1380121d085a5601549e908) )
- ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(d4621e8d) SHA1(6ec49c52b88e648dbe2fe3c47868946369d717cf) )
+ ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(12c922c1) SHA1(d463328a203667dad42a7cbfb6853289095fa4c9) )
+ ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(5e9c8810) SHA1(711c85a81dc61290fc43b56ccd955b4e46caee32) )
+ ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(4ce349e4) SHA1(4499e570211aeed44db93a7c3b7b5d0b4390b0ca) )
+ ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(6c7343cf) SHA1(28c282857f0c29198865444061fcf37e84697cf7) )
ROM_END
-
-
-
-ROM_START( beachpt )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u02_o_-wave-a-b-cb-rus_.bin", 0x0000, 0x100000, CRC(b26085fc) SHA1(19f350c46088b58438dfc234d4ac543105913286) )
+// Chickendales
+ROM_START( chicdale )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "mu2.040", 0x000000, 0x100000, CRC(2f2670b4) SHA1(3530a3f0f149da0221e1c25351f62de0e8e6a2b7) )
+ ROM_LOAD( "chick_u2_0e52.u2", 0x000000, 0x100000, CRC(c213b510) SHA1(9549f16a2bbfc735d55b908adad59283abf1b221) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u06_crp5bs1a.bin", 0x0000, 0x020000, CRC(0db0531d) SHA1(391e41b2dcd38669dcc24e938e9838feee972559) )
+ ROM_LOAD( "mu6.010", 0x000000, 0x020000, CRC(bac68023) SHA1(fdc5d540ceb4a2d44013dfd59b46103ec6745dea) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "u09_bep5a01d.bin", 0x000000, 0x100000, CRC(0f4614de) SHA1(2181c552e9a3669fda5e87d0c596d5534d24d4b3) )
- ROM_LOAD32_BYTE( "u11_bep5a01d.bin", 0x000001, 0x100000, CRC(4f8c6fee) SHA1(2b75fe948bddda899969ef4a7663a52dc7b0eb81) )
- ROM_LOAD32_BYTE( "u13_bep5a01d.bin", 0x000002, 0x100000, CRC(ca9a24e5) SHA1(67276f680f3aedf480c54c666f0db1110cd77aee) )
- ROM_LOAD32_BYTE( "u15_bep5a01d.bin", 0x000003, 0x100000, CRC(ac904dc8) SHA1(165f66423a9c9231baa4e8b2e465d7f10f61202d) )
- ROM_LOAD32_BYTE( "u08_bep5a01d.bin", 0x400000, 0x100000, CRC(1f19cba6) SHA1(201975c7b440d2f53439e7383fb49b921015f22c) )
- ROM_LOAD32_BYTE( "u10_bep5a01d.bin", 0x400001, 0x100000, CRC(940bb1b2) SHA1(a57d6e5d3872787ff1821cbc80032269b378ecf0) )
- ROM_LOAD32_BYTE( "u12_bep5a01d.bin", 0x400002, 0x100000, CRC(07851214) SHA1(d088243f11ba51c79796986e99f0aa34d0d697d6) )
- ROM_LOAD32_BYTE( "u14_bep5a01d.bin", 0x400003, 0x100000, CRC(16a5ce9c) SHA1(3551e6eb7ff34f9ea70b7e6e940044ea1b4c59bb) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u9.080", 0x000000, 0x100000, CRC(9b74ec99) SHA1(99834a3ad4ccbd594ae9de0edde7920619bcad5e) )
+ ROM_LOAD32_BYTE( "u11.080", 0x000001, 0x100000, CRC(1b783bf7) SHA1(7018ce74b67370fdf679646d049a64569e7d1906) )
+ ROM_LOAD32_BYTE( "u13.080", 0x000002, 0x100000, CRC(f21780da) SHA1(b40ee4de5d7b68bd723affecc9160bd78198390e) )
+ ROM_LOAD32_BYTE( "u15.080", 0x000003, 0x100000, CRC(e62e2d2d) SHA1(b06443f0a67f93b3cc8f18fc3b1bdce54ba2c792) )
+ ROM_LOAD32_BYTE( "u8.080", 0x400000, 0x100000, CRC(7f2f9e2b) SHA1(ecbf5fc17ea45fd47f6b2a87ee0cd4b8e63eb5b8) )
+ ROM_LOAD32_BYTE( "u10.080", 0x400001, 0x100000, CRC(631e4449) SHA1(4b0da20238523efd0235fc95bbf6eea0a0866ca1) )
+ ROM_LOAD32_BYTE( "u12.080", 0x400002, 0x100000, CRC(b927f5dc) SHA1(5c9af46b54b7e919ffc0098114bee6fbcc45167a) )
+ ROM_LOAD32_BYTE( "u14.080", 0x400003, 0x100000, CRC(6d0f1d70) SHA1(d096ac8b501e3a6664c3042f86aa03fe35626b09) )
- ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18_bep_aa_a.bin", 0x0000, 0x100000, CRC(a0c6dafd) SHA1(9a09224b2d91cbf4efad5563a7633b973b0e5ce1) )
- ROM_LOAD( "u19_bep_aa_a.bin", 0x0000, 0x100000, CRC(69f1f267) SHA1(4fa837bf285670ed26ed0f0dada5e2a54ca7f142) )
- ROM_LOAD( "u20_bep_aa_a.bin", 0x0000, 0x100000, CRC(3dc030aa) SHA1(f01305fb187ae150b1264e8b72439e638772fbcc) )
- ROM_LOAD( "u21_bep_aa_a.bin", 0x0000, 0x100000, CRC(791c809a) SHA1(68af52cb2032a0c3f76030681baaaac8fb0bf51b) )
-ROM_END
+ // sound (missing or not needed here?)
+ ROM_REGION( 0x400000, "pals", 0 ) // pal (converted from JED)
+ ROM_LOAD( "galu35.bin", 0x000000, 0x0002e5, CRC(c81159c9) SHA1(36222e0a72310986fd4a76c0677a6bd74a0ad7df) )
+ROM_END
-ROM_START( beetleup )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u02_0-beet-a-a-cc.0def.bin", 0x0000, 0x100000, CRC(b5eedf40) SHA1(40a9baac99e9844cef5d3922c853f5e4903a7833) )
+// Clown (Russia)
+ROM_START( aclown )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "mu2.040", 0x000000, 0x100000, CRC(162915c4) SHA1(333d2ac8323eaaa0c7b85804b7d4ceef347118d1) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u06_n5b0-a-04-b.65aa.bin", 0x0000, 0x020000, CRC(d68d08e4) SHA1(548577d43f4136cf16266fe6855898a30fa49965) )
- ROM_LOAD( "u06_n5b0-a-05-b.648f.bin", 0x0000, 0x020000, CRC(2d2ff35f) SHA1(97759fbad4b6b30ca8f8ea74da74cfaa433a7fa2) )
- ROM_LOAD( "u06_n5b0-a-06-b.64 56.bin", 0x0000, 0x020000, CRC(7b4a6a97) SHA1(e3d54476730ca34a9f7214219cf991a220e15d5c) )
+ ROM_LOAD( "mu6.010", 0x000000, 0x020000, CRC(ab86b3d4) SHA1(b0d32887674f971a3ccd482775ec3f978a2ea0c1) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "u09_7b88.bin", 0x000000, 0x100000, CRC(8443972b) SHA1(5f2eea84ba18a83502f36eeaa52cff49a1631668) )
- ROM_LOAD32_BYTE( "u11_1957.bin", 0x000001, 0x100000, CRC(36c7e5c5) SHA1(2bad0bb6b363af6a37f5b11c7ca8b3b674df4072) )
- ROM_LOAD32_BYTE( "u13_b661.bin", 0x000002, 0x100000, CRC(0e74726c) SHA1(3103d801a622315877fc09d9c99290b54b266885) )
- ROM_LOAD32_BYTE( "u15_fd57.bin", 0x000003, 0x100000, CRC(9eabc514) SHA1(ed89b068b381ad4e007352bddf3aebe10ebebf4a) )
- ROM_LOAD32_BYTE( "u08_5804.bin", 0x400000, 0x100000, CRC(65a020e3) SHA1(2bb781905338e2d444222095d8430137632fae3d) )
- ROM_LOAD32_BYTE( "u10_647c.bin", 0x400001, 0x100000, CRC(c46c064d) SHA1(6181cf0e1d53f0a79c266b4f87d3b0c32313c593) )
- ROM_LOAD32_BYTE( "u12_07f3.bin", 0x400002, 0x100000, CRC(cefdfdad) SHA1(2032e0942f52d025f8da225c31ca7f7121c7b7f8) )
- ROM_LOAD32_BYTE( "u14_fe27.bin", 0x400003, 0x100000, CRC(50cfd898) SHA1(8b881ae8c60f215bb0f75e14493ee4a0c9f2b364) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(8bcbb27f) SHA1(d953268213580af11a2cc0dbd8bf1652f97f3929) )
+ ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(73fb3169) SHA1(8bbe5d8b8898e2d3368506e7b66d05b8f8ac7d02) )
+ ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(47580998) SHA1(37a6e409618aa3fe7d24bd3580fa93269895b059) )
+ ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(948e3737) SHA1(43225f114a3ae66caf95821a1e8a01f1a129e38d) )
+ ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(b4607b04) SHA1(81eff1246c68017e123fbfa46b4b8234808727d7) )
+ ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(df875d3b) SHA1(262ec7db996f13fa32d17c1c5d0c89c2f98ca1cc) )
+ ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(dbab3a76) SHA1(a85b76ade2d410cbbee7a62de96bed333ce23dc3) )
+ ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(f3a6bbd5) SHA1(5a9e81ee9ce533b3ab1aeaa4ca9185f5bf0b2a65) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18_f978.bin", 0x0000, 0x100000, CRC(afa9a1a8) SHA1(a06bdd776ca7ba9e9ceecc0935761e6d88cad90e) )
- ROM_LOAD( "u19_8766.bin", 0x0000, 0x100000, CRC(f63ed18c) SHA1(59d05582bbd125009a6bc226ec0ef2120c768694) )
- ROM_LOAD( "u20_26f0.bin", 0x0000, 0x100000, CRC(39f8e6d9) SHA1(59cd29d08610f601e3228364ae52a4e49e325f40) )
- ROM_LOAD( "u21_ea59.bin", 0x0000, 0x100000, CRC(0bd2f188) SHA1(f29a67c3cd36e7ee6fd7ef72a7724dc9df5b5657) )
+ ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(c3efd917) SHA1(7f675c27d616a489c22544e98f726a62cfcb1bdf) )
+ ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(a6e90bbf) SHA1(4aa4746b3d474caf653396171b42b56a3e16caa3) )
+ ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(fef1ae8e) SHA1(efc5c289be052c56b5cb7976da25bd5bfacd97fc) )
+ ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(47108677) SHA1(864f767c54c0f9ff63fad3829e828abbd5e84f0b) )
ROM_END
-
-ROM_START( bigblue )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "o_-bbbu01-adbaa-cb-std_.8mu02.bin", 0x0000, 0x100000, CRC(62d08d90) SHA1(fa563dd59eacd3021744863245aa7f82dea2c266) )
+// Crazy Fruits Blue (Russia) (set 1)
+ROM_START( cfblue )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2.bin", 0x000000, 0x100000, CRC(0b5035d0) SHA1(f77ce0d16da39c259c0f764c23c23d0313166612) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "big blue bags.bin", 0x0000, 0x020000, CRC(4ec3fc1c) SHA1(7a081d370c54a6ea333957958b1341560458e845) )
- ROM_LOAD( "bbbu01-c-za-std_-5-xx-xx-axx.1mu06.bin", 0x0000, 0x020000, CRC(09e6df0b) SHA1(85961160f95cb8d223f73483d6edad79fa37d729) )
+ ROM_LOAD( "u6.bin", 0x000000, 0x020000, CRC(63690e7e) SHA1(9dcb3d64bae03556875185ead23d9b911773f5bd) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu09.bin", 0x000000, 0x100000, CRC(6f11b908) SHA1(663382bc295615afbc3a9a39c7089470b8b55926) )
- ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu11.bin", 0x000001, 0x100000, CRC(4cddcb5a) SHA1(e23354ab36f814b22c39564111558d4935fe8d70) )
- ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu13.bin", 0x000002, 0x100000, CRC(3a6dd649) SHA1(0f2b6cdf4f10ded99adc4fe0b47e4fada4aa6643) )
- ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu15.bin", 0x000003, 0x100000, CRC(2efd2269) SHA1(3923ec31e245c29786cd67a89d582bc051967580) )
- ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu08.bin", 0x400000, 0x100000, CRC(32f01864) SHA1(f515cfa2ecdc239b441f6f5f7033516e88030ad6) )
- ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu10.bin", 0x400001, 0x100000, CRC(97efddfd) SHA1(1303733596b725b705fa9dfd4150b4a6df9d4172) )
- ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu12.bin", 0x400002, 0x100000, CRC(36c4f212) SHA1(1e7ea33114f1ca836849242d717023b1315a466e) )
- ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu14.bin", 0x400003, 0x100000, CRC(bde8af9e) SHA1(095e567d35c45ae5e377cdf07ab77f6781e39cca) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u9.bin", 0x000000, 0x100000, CRC(d1c2ad08) SHA1(e53c7e91b2ab86e64f4ae753404aa86ae881becf) )
+ ROM_LOAD32_BYTE( "u11.bin", 0x000001, 0x100000, CRC(42872aef) SHA1(54d7cf6a9f3d5d8b2b14fa381fd7b9db974525e1) )
+ ROM_LOAD32_BYTE( "u13.bin", 0x000002, 0x100000, CRC(7da9415b) SHA1(aaa73465417dcf92838021b37cb412d52ccb4d85) )
+ ROM_LOAD32_BYTE( "u15.bin", 0x000003, 0x100000, CRC(e0270268) SHA1(6bf5281eb5418903403873547690bdfa04597fea) )
+ ROM_LOAD32_BYTE( "u8.bin", 0x400000, 0x100000, CRC(a870d32c) SHA1(0014b9b2a2b35ae8a10ed2910213ccea50f8ba61) )
+ ROM_LOAD32_BYTE( "u10.bin", 0x400001, 0x100000, CRC(f99ae371) SHA1(b468a18eb7604f191198aae68e961db97cae0332) )
+ ROM_LOAD32_BYTE( "u12.bin", 0x400002, 0x100000, CRC(2b2fcd96) SHA1(ce4a8d1267874e5d615e8b3abbb4d1b16630ae7a) )
+ ROM_LOAD32_BYTE( "u14.bin", 0x400003, 0x100000, CRC(d66b735c) SHA1(6c4c1e5b5b21b60e950cf70d2d6ad72d5b22237a) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "bbbu01-ba-a-std_-_.8su18.bin", 0x0000, 0x100000, CRC(451687c9) SHA1(5165586a7ab69529396e4b387002e1dcbe3d892d) )
- ROM_LOAD( "bbbu01-ba-a-std_-_.8su19.bin", 0x0000, 0x100000, CRC(bb0029ec) SHA1(ab460d40ee46ee43b195b7a2ece42bcaaa043892) )
- ROM_LOAD( "bbbu01-ba-a-std_-_.8su20.bin", 0x0000, 0x100000, CRC(fb1bd294) SHA1(78dcaffc56f56d2b31d0c20d48d91696910be160) )
- ROM_LOAD( "bbbu01-ba-a-std_-_.8su21.bin", 0x0000, 0x100000, CRC(ec6d68ea) SHA1(91167b6379a6e1748e635c4b2b603a39fb6b049d) )
+ ROM_LOAD( "u18.bin", 0x000000, 0x100000, CRC(77d6c103) SHA1(667c4c77eeba3af9c8c772a9ffe2941f8f3df38f) )
+ ROM_LOAD( "u19.bin", 0x000000, 0x100000, CRC(36371ef6) SHA1(83a454a71e01962937b23817419fe2e071f077ee) )
+ ROM_LOAD( "u20.bin", 0x000000, 0x100000, CRC(d9548179) SHA1(12537373a6a3f79952d2c7c48d41e156fc578902) )
+ ROM_LOAD( "u21.bin", 0x000000, 0x100000, CRC(3a620cc6) SHA1(1dced1a40c6b3d734ea463fe58bdd9ee9e3b8822) )
ROM_END
-ROM_START( castaway )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2.8 o-cast-b-a-cc", 0x0000, 0x100000, CRC(8f103bb3) SHA1(65596aff9cfb2345a36a0e2a2b03a2b4310d421c) )
+
+// Crazy Fruits Blue (Russia) (set 2)
+ROM_START( cfbluea )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(4ee3805e) SHA1(45d9438a26230f50013feda1b2c68ab2f8d4f419) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6.1 c5bo-a-03-a", 0x0000, 0x020000, CRC(3917302a) SHA1(39b0672c36554712825a0e310522933be4b46d84) )
+ ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(0db0531d) SHA1(391e41b2dcd38669dcc24e938e9838feee972559) )
+ ROM_LOAD( "u6low-10.bin", 0x000000, 0x020000, CRC(3cbad206) SHA1(d2a468d5bfd441b74ef85be088873d1f74d5c66e) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "u9.8 cw5_b-03-b", 0x000000, 0x100000, CRC(c49aaf25) SHA1(5518312046208b4f912e9dee2ff24653a9976c6f) )
- ROM_LOAD32_BYTE( "u11.8 cw5_b-03-b", 0x000001, 0x100000, CRC(24267b4b) SHA1(9103923dd1bba0b01f6020f7c357ac9b7bef4951) )
- ROM_LOAD32_BYTE( "u13.8 cw5_b-03-b", 0x000002, 0x100000, CRC(3e606516) SHA1(5edad0a3099700bfeedff5a143591a85b3c4f582) )
- ROM_LOAD32_BYTE( "u15.8 cw5_b-03-b", 0x000003, 0x100000, CRC(7211abc5) SHA1(acaa9ad55abeb34e2d97b419f5213e44e80adde0) )
- ROM_LOAD32_BYTE( "u8.8 cw5_b-03-b", 0x400000, 0x100000, CRC(03839c9e) SHA1(56ad8843192ca47c1d467c69ab2d13189a19a905) )
- ROM_LOAD32_BYTE( "u10.8 cw5_b-03-b", 0x400001, 0x100000, CRC(cbe7399e) SHA1(da829dcab116b48a56526750546287e33d3de3c7) )
- ROM_LOAD32_BYTE( "u12.8 cw5_b-03-b", 0x400002, 0x100000, CRC(770e92de) SHA1(c358b0f528fc5c1efd2dd4a0563e958d90b55d64) )
- ROM_LOAD32_BYTE( "u14.8 cw5_b-03-b", 0x400003, 0x100000, CRC(dadd0d0b) SHA1(87750c506f6429f382149d205849663b622abda3) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(37b3a499) SHA1(eb3252185596dd513d3cce95f3425241ca8513ab) )
+ ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(d98b2b1d) SHA1(414d300d113e9737d63efea09b358aeb8eeed7fc) )
+ ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(478bb4a5) SHA1(94304fe1477bfc66e8dcf2c2c91226754cb8c32a) )
+ ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(cfe9e4d4) SHA1(8cd4aadd885fc5500b0a2c1e41b1f096bd4cd2b5) )
+ ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(39670383) SHA1(cd78289377c75497f96dd6b76dc717b2ddc8d9c6) )
+ ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(f9d054ae) SHA1(244733f7ee6e82fef5d0245c3fd947d369b296f9) )
+ ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(5e95768f) SHA1(ba616bf41a2bb205d366e19e773ee5f0009be212) )
+ ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(89aaf76b) SHA1(6e731ba815c20b184e44495dd2231d9ae315a146) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18.8 castaa_a", 0x0000, 0x100000, CRC(98b0a1f3) SHA1(2a6298a82dc549078857e43d60e692062b1cd022) )
- ROM_LOAD( "u19.8 castaa_a", 0x0000, 0x100000, CRC(2c7aa4a4) SHA1(7e495ce9e18ae759e9ecf21f55c6bc7c7b06a92d) )
- ROM_LOAD( "u20.8 castaa_a", 0x0000, 0x100000, CRC(cbb5824d) SHA1(626fd9c0f76942c7c040743519e2af867afed75a) )
- ROM_LOAD( "u21.8 castaa_a", 0x0000, 0x100000, CRC(31554b6b) SHA1(6af8dc72e0fcec7f73b54b728f8c61a51f5f0d48) )
+ ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(77d6c103) SHA1(667c4c77eeba3af9c8c772a9ffe2941f8f3df38f) )
+ ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(36371ef6) SHA1(83a454a71e01962937b23817419fe2e071f077ee) )
+ ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(d9548179) SHA1(12537373a6a3f79952d2c7c48d41e156fc578902) )
+ ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(3a620cc6) SHA1(1dced1a40c6b3d734ea463fe58bdd9ee9e3b8822) )
ROM_END
-ROM_START( castawaya ) // bad dump? (roms all look incorrect size to me)
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u-2 m27c801.bin", 0x0000, 0x080000, CRC(55b61206) SHA1(abdbe887a6739dbc9f51838b31d23d3c8d8f03dd) )
- ROM_REGION( 0x080000, "u6", 0 ) // config?
- ROM_LOAD( "u-6 m27c801.bin", 0x0000, 0x080000, CRC(86538b30) SHA1(6b8d732b59af2cc1a6524989f8cf12a4d4dac484) )
+// Crazy Fruits Green (Russia)
+ROM_START( cfgreen )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(2afda383) SHA1(8a1d1a780f710119cbf7ee6a53d5de91cfe120c2) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- // seem to be half size, doesn't have the TMS vectors
- ROM_LOAD32_BYTE( "u-9 m27c801.bin", 0x000000, 0x080000, BAD_DUMP CRC(4a5efe38) SHA1(23e82eeadccdd0224858686b1d96bd5d184904cb) )
- ROM_LOAD32_BYTE( "u-11 m27c801.bin", 0x000001, 0x080000, BAD_DUMP CRC(099e27e2) SHA1(4419ac8090ccab673e61f4f73c837971e341e7e2) )
- ROM_LOAD32_BYTE( "u-13 m27c801.bin", 0x000002, 0x080000, BAD_DUMP CRC(f65eb71f) SHA1(9e116cc2b6768c1525759735eecc05db5906f2dc) )
- ROM_LOAD32_BYTE( "u-15 m27c801.bin", 0x000003, 0x080000, BAD_DUMP CRC(319c8bb6) SHA1(8de3c66b375f0ff200ff240765c6f37609c4935e) )
- ROM_LOAD32_BYTE( "u-8 m27c801.bin", 0x400000, 0x080000, BAD_DUMP CRC(74e21aeb) SHA1(dce3b413c6efdc2d85357dd1f9e4e2808aef4f7e) )
- ROM_LOAD32_BYTE( "u-10 m27c801.bin", 0x400001, 0x080000, BAD_DUMP CRC(45294960) SHA1(1b5b33ef730c44a4800e80891369d4e21e1729d2) )
- ROM_LOAD32_BYTE( "u-12 m27c801.bin", 0x400002, 0x080000, BAD_DUMP CRC(be19a02c) SHA1(8968d4ec5ff58dcf50c3c9ac9601c6416399091d) )
- ROM_LOAD32_BYTE( "u-14 m27c801.bin", 0x400003, 0x080000, BAD_DUMP CRC(cda73f12) SHA1(dd5556d7e19ef1a9fec1b914a7464fbc4f97effe) )
+ ROM_REGION( 0x020000, "u6", 0 ) // config?
+ ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(3cbad206) SHA1(d2a468d5bfd441b74ef85be088873d1f74d5c66e) )
- ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u-18 m27c801.bin", 0x0000, 0x080000, BAD_DUMP CRC(2e3d7181) SHA1(eed1a1594405f416efb379e134c12be89d495402) )
- ROM_LOAD( "u-19 m27c801.bin", 0x0000, 0x080000, BAD_DUMP CRC(a3c906f6) SHA1(25314d79f420c177424bf1de492ba8d9a928f643) )
- ROM_LOAD( "u-20 m27c801.bin", 0x0000, 0x080000, BAD_DUMP CRC(ec395eaa) SHA1(fa27b928971c039fb1586631f136bd7577be1c57) )
- ROM_LOAD( "u-21 m27c801.bin", 0x0000, 0x080000, BAD_DUMP CRC(324d0539) SHA1(71639e3fc40c09e07221524580046dc2447b43f1) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(19a47a1b) SHA1(ae9ad2027fddf96062833345a5e2b9e7101b3380) )
+ ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(7d805f07) SHA1(0bb27a702e45d3d660363ac75c0f52f07248d40a) )
+ ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(104110dc) SHA1(9322598a94e3c71f546da3b42f137a22fc78a894) )
+ ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(c752e5b1) SHA1(98832603529c99d83885a9b72bf30aa5eb1eee93) )
+ ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(63e91841) SHA1(a9644b4ed37c2143273e782bd0e85906466c1173) )
+ ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(b198a826) SHA1(361f9a055633831f45b148ca5e23cbb9be97c95f) )
+ ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(9eb176c4) SHA1(73dea223338235a3ebd224c210df4923dbb01b56) )
+ ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(ad654d75) SHA1(31804c2fae178b2614759542cba1af34b82e5f12) )
- ROM_REGION( 0x400000, "others", 0 )
- ROM_LOAD( "ds1225y.bin", 0x0000, 0x002000, CRC(76af0395) SHA1(ce6aef5349b155f8e103bb4dd33933c501a490ae) )
- ROM_LOAD( "ds1386-32k.bin", 0x0000, 0x002000, CRC(4e28ebc9) SHA1(dfd60c53ffdd0b44b7f894e19b212bc88e81192f) )
+ ROM_REGION( 0x400000, "u18u21", 0 ) // sound
+ ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(40a74e38) SHA1(6ea3458c449434353bbc7d03bbd7a83294584603) )
+ ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(6769a6c2) SHA1(5eddf6a86897b39a6c75462b5047d5175b543b18) )
+ ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(9c3288a0) SHA1(feb3b9fefd38052a5fd2fcee6a653c6043ff1759) )
+ ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(71367522) SHA1(0d82940ff87396e8722f8250cd4961d11dfa46a0) )
ROM_END
+// Dancing Spirit (Russia)
ROM_START( dncsprt )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "o_-dasp01-adaaa-cc-std_.8mu02", 0x0000, 0x100000, CRC(744b40d7) SHA1(f7b3f507ccccb36ae55ac3b567956c45a83d3b63) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "o_-dasp01-adaaa-cc-std_.8mu02", 0x000000, 0x100000, CRC(744b40d7) SHA1(f7b3f507ccccb36ae55ac3b567956c45a83d3b63) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "dasp01-d-za-std_-5-xx-xx-axx.1mu06", 0x0000, 0x020000, CRC(2d5f7976) SHA1(77de321ba2f46726a0c26aa498a4c3deb7f8c421) )
+ ROM_LOAD( "dasp01-d-za-std_-5-xx-xx-axx.1mu06", 0x000000, 0x020000, CRC(2d5f7976) SHA1(77de321ba2f46726a0c26aa498a4c3deb7f8c421) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
ROM_LOAD32_BYTE( "dasp01-a_-c-std_-5_.8gu09", 0x000000, 0x100000, CRC(e6941863) SHA1(c9fe08bd070c9fac7b8c9089a6ecbff581265b3a) )
ROM_LOAD32_BYTE( "dasp01-a_-c-std_-5_.8gu11", 0x000001, 0x100000, CRC(400b82ab) SHA1(5af6daf65e50b0c5ad27c43b0f3d4d8d24f38102) )
ROM_LOAD32_BYTE( "dasp01-a_-c-std_-5_.8gu13", 0x000002, 0x100000, CRC(b425a8f6) SHA1(82d8e0d8602a81c6d4cf528b73f3c84ab5dde11b) )
@@ -1088,21 +1154,48 @@ ROM_START( dncsprt )
ROM_LOAD32_BYTE( "dasp01-a_-c-std_-5_.8gu14", 0x400003, 0x100000, CRC(b6dd4982) SHA1(45ff8232eb965ad60e4cf066ab3addb532b39b56) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "dasp01-aa-a-std_-_.8su18", 0x0000, 0x100000, CRC(65aeacb0) SHA1(97bbdb4e70e50c14ecb2cc18756c581a2069715f) )
- ROM_LOAD( "dasp01-aa-a-std_-_.8su19", 0x0000, 0x100000, CRC(0f81c833) SHA1(5568c92484c2b52b04034d99a7531a78bc1d5eb1) )
- ROM_LOAD( "dasp01-aa-a-std_-_.8su20", 0x0000, 0x100000, CRC(97302d05) SHA1(4a03d337a5e46f9b5686d1e16fa72f83cf4674f0) )
- ROM_LOAD( "dasp01-aa-a-std_-_.8su21", 0x0000, 0x100000, CRC(849e86f9) SHA1(cba1379b4cef793fc08c20607867d01c53d397a4) )
+ ROM_LOAD( "dasp01-aa-a-std_-_.8su18", 0x000000, 0x100000, CRC(65aeacb0) SHA1(97bbdb4e70e50c14ecb2cc18756c581a2069715f) )
+ ROM_LOAD( "dasp01-aa-a-std_-_.8su19", 0x000000, 0x100000, CRC(0f81c833) SHA1(5568c92484c2b52b04034d99a7531a78bc1d5eb1) )
+ ROM_LOAD( "dasp01-aa-a-std_-_.8su20", 0x000000, 0x100000, CRC(97302d05) SHA1(4a03d337a5e46f9b5686d1e16fa72f83cf4674f0) )
+ ROM_LOAD( "dasp01-aa-a-std_-_.8su21", 0x000000, 0x100000, CRC(849e86f9) SHA1(cba1379b4cef793fc08c20607867d01c53d397a4) )
ROM_END
+
+// Dream Maker
ROM_START( drmmake )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2-801", 0x0000, 0x100000, CRC(c809ecf0) SHA1(4ab641f9b805cd13d1fb860a3e9776505474a95d) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "mu2.080", 0x000000, 0x100000, CRC(cf54db9e) SHA1(79ad505c766bcdd51e08ff43c0221c14c9f519df) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6-1001", 0x0000, 0x020000, CRC(7a00ad2a) SHA1(67d90b10b4f62922c4ed94bb8a0f77e474ee385d) )
- ROM_LOAD( "dream maker.bin", 0x0000, 0x020000, CRC(49c19eb3) SHA1(a55d4f9a0dd2b1db41fb28f475efa7e9f7c85be6) )
+ ROM_LOAD( "mu6.010", 0x000000, 0x020000, CRC(7a00ad2a) SHA1(67d90b10b4f62922c4ed94bb8a0f77e474ee385d) )
+
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u9.080", 0x000000, 0x100000, CRC(6a453363) SHA1(228652e3915b6d8c1a5523acc77caa65b0c61a1f) )
+ ROM_LOAD32_BYTE( "u11.080", 0x000001, 0x100000, CRC(81185cbd) SHA1(0367f0d9c6adf13be4f74863463ed8570209658b) )
+ ROM_LOAD32_BYTE( "u13.080", 0x000002, 0x100000, CRC(96c7434f) SHA1(0ed6b3a905d811e9069de446f26b22050d305d7b) )
+ ROM_LOAD32_BYTE( "u15.080", 0x000003, 0x100000, CRC(0f8b4209) SHA1(e9f1e03446e9252b843273879e647bf85ed6e1ac) )
+ ROM_LOAD32_BYTE( "u8.080", 0x400000, 0x100000, CRC(3975a3da) SHA1(2e2e0647984f38341f6a647964792e60b0b63cd4) )
+ ROM_LOAD32_BYTE( "u10.080", 0x400001, 0x100000, CRC(72288580) SHA1(72c430747453df09b3bf13cd1cf044de18ab1333) )
+ ROM_LOAD32_BYTE( "u12.080", 0x400002, 0x100000, CRC(2c657b56) SHA1(7377fd4a5e7bd64ece9bb68db993be5a308d9bc8) )
+ ROM_LOAD32_BYTE( "u14.080", 0x400003, 0x100000, CRC(146a9774) SHA1(426184154b6ae89a8e659e6a4fdb433a3ce6c449) )
+
+ // sound (missing or not needed here? there is an OKI M6585 on the mainboard)
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION( 0x400000, "pals", 0 ) // pal (converted from JED)
+ ROM_LOAD( "galu35.bin", 0x000000, 0x0002e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) )
+ROM_END
+
+
+// Dream Maker (Russia)
+ROM_START( drmmaker )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2-801", 0x000000, 0x100000, CRC(c809ecf0) SHA1(4ab641f9b805cd13d1fb860a3e9776505474a95d) )
+
+ ROM_REGION( 0x020000, "u6", 0 ) // config?
+ ROM_LOAD( "u6-1001", 0x000000, 0x020000, CRC(7a00ad2a) SHA1(67d90b10b4f62922c4ed94bb8a0f77e474ee385d) )
+ ROM_LOAD( "dream maker.bin", 0x000000, 0x020000, CRC(49c19eb3) SHA1(a55d4f9a0dd2b1db41fb28f475efa7e9f7c85be6) )
+
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
ROM_LOAD32_BYTE( "u9-801", 0x000000, 0x100000, CRC(e560eeff) SHA1(fe33927a91be7ecd2a283bb09b87f5f3d659cf09) )
ROM_LOAD32_BYTE( "u11-801", 0x000001, 0x100000, CRC(693cec8e) SHA1(83d33603fa11aa4341a40b2ffc4862992307dcfc) )
ROM_LOAD32_BYTE( "u13-801", 0x000002, 0x100000, CRC(8b78f6aa) SHA1(74804c44124b71f0f11446da342d0548130394f6) )
@@ -1113,23 +1206,146 @@ ROM_START( drmmake )
ROM_LOAD32_BYTE( "u14-801", 0x400003, 0x100000, CRC(416bcc36) SHA1(9e550f49ba63335b21f45786b87aa6e5b42f2acb) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18-801", 0x0000, 0x100000, CRC(ee2dabf6) SHA1(8fbace51d38d354318d223f259e5b5ae9d922ec5) )
- ROM_LOAD( "u19-801", 0x0000, 0x100000, CRC(bb0029ec) SHA1(ab460d40ee46ee43b195b7a2ece42bcaaa043892) )
- ROM_LOAD( "u20-801", 0x0000, 0x100000, CRC(d9fe585c) SHA1(d5e6d407ce67e7d536a68fcfe834c66cf365716d) )
- ROM_LOAD( "u21-801", 0x0000, 0x100000, CRC(d5e81837) SHA1(ebbd5a3a73c3f440e518103da7e8db8c0818f351) )
+ ROM_LOAD( "u18-801", 0x000000, 0x100000, CRC(ee2dabf6) SHA1(8fbace51d38d354318d223f259e5b5ae9d922ec5) )
+ ROM_LOAD( "u19-801", 0x000000, 0x100000, CRC(bb0029ec) SHA1(ab460d40ee46ee43b195b7a2ece42bcaaa043892) )
+ ROM_LOAD( "u20-801", 0x000000, 0x100000, CRC(d9fe585c) SHA1(d5e6d407ce67e7d536a68fcfe834c66cf365716d) )
+ ROM_LOAD( "u21-801", 0x000000, 0x100000, CRC(d5e81837) SHA1(ebbd5a3a73c3f440e518103da7e8db8c0818f351) )
ROM_END
+// Golden Glenn (Russia)
+ROM_START( goldglen )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(94c48e59) SHA1(b660d81f1659004e08df402ef9da61a1f4818b48) )
+
+ ROM_REGION( 0x020000, "u6", 0 ) // config?
+ ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(94409a39) SHA1(99af058e48147fc75a8c23e4f1a28484f3d5f625) )
+
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(01e69d2d) SHA1(a6e6974aec52931aeeb1f90d8f917ab85ebe843e) )
+ ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(6c39a180) SHA1(95f91ec10961d36c86dee5ce42fc7c8ab693e271) )
+ ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(e60a093f) SHA1(fa0af661f869f80e11097e101ec6100a75d1e63f) )
+ ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(9877e8aa) SHA1(2073d451446709d92700cf4afb68e5b04580c620) )
+ ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(631d617c) SHA1(44cbd9a8275537f2f8804b1d17645f74cd12fdb1) )
+ ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(cdd5e435) SHA1(659b29ab16d5a3878e4984599e83f8d1cf377ca7) )
+ ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(dcb50d70) SHA1(7f8c36d5dea9c3ce61c31aef7b310f546095d72e) )
+ ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(6c0277b1) SHA1(266c6eb08cb3d9e49cf397a7e01785627892200e) )
+
+ ROM_REGION( 0x400000, "u18u21", 0 ) // sound
+ ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(2afed5cf) SHA1(633214458cd47666675464fb3621aaffbe0ca63a) )
+ ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(70279081) SHA1(15933d81af85b2c6f831e765f2a4e4f0e44fdc18) )
+ ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(0bcaa5b2) SHA1(c964b7ec99cfc641f91c1a483e68999fc3e23fa4) )
+ ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(e2aad0ee) SHA1(2678ae011a820da644e78e0c5d2a6af39c35ac4d) )
+ROM_END
+
+
+// Happy Happy Hippy
+ROM_START( haphippy )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "hippy_u2_618c.u2", 0x000000, 0x80000, CRC(36600001) SHA1(906647a7901a4bbf7a347580d8a6d49d0378ed86) )
+
+ ROM_REGION( 0x020000, "u6", 0 ) // config?
+ ROM_LOAD( "hippy_u6_e8a7.u6", 0x000000, 0x020000, CRC(16c84599) SHA1(af14cb98c95fad16424f1f9582fcede10f187ef0) )
+
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ // No TMS34020 code or sound data?
+ ROM_LOAD32_BYTE( "haphippy.u9", 0x000000, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "haphippy.u11", 0x000001, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "haphippy.u13", 0x000002, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "haphippy.u15", 0x000003, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "haphippy.u8", 0x400000, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "haphippy.u10", 0x400001, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "haphippy.u12", 0x400002, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "haphippy.u14", 0x400003, 0x100000, NO_DUMP )
+ROM_END
+
+
+// I C Cash (Russia)
+ROM_START( iccash )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(27b1c41e) SHA1(55a24301578b2d4e46948362aab8bfbb2918169a) )
+
+ ROM_REGION( 0x020000, "u6", 0 ) // config?
+ ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(5e7d8a05) SHA1(255355cf594c2818d358860e616b5b578a87e974) )
+
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(db77fe46) SHA1(2502c5c165a9720e5ff1196eaa17189281c3145c) )
+ ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(3a512c6c) SHA1(ba8592773d71e57b3dc6aaff7df1214a57429b10) )
+ ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(75fadda8) SHA1(5a968f10e582fbe74000f3de33dc1e2d07c3fec1) )
+ ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(10e5a8e7) SHA1(e91de378c9485dce080d2d00a923e75f8be30f9a) )
+ ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(0ac57377) SHA1(cbbac3434b5b46f30abe880990300bf0a0393557) )
+ ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(03c67464) SHA1(d5a1e657140a31c3f77c6490bcf35075d0546b71) )
+ ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(622992ef) SHA1(6a31212436dcda308f1f78abff714bbd97df71ef) )
+ ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(ce62e7f9) SHA1(af9eeb7bdb76870e914f1233c9fd496d6c33a615) )
+
+ ROM_REGION( 0x400000, "u18u21", 0 ) // sound
+ ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(8e322415) SHA1(14685d1f426187d1fbe878713cd60ece177fdd1b) )
+ ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(8ce5ba46) SHA1(012d8686291d9078be8a489e21180681ace06b8b) )
+ ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(be59025d) SHA1(b64c707129c1418833c1b5601d0a194c2e29d9a8) )
+ ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(d6b79eae) SHA1(a128adbca125f3811edc8c7042bf41b45dc61083) )
+ROM_END
+
+
+// I C Money (set 1)
+ROM_START( atricmon )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "mb-u2.bin", 0x000000, 0x80000, CRC(0fc3f42f) SHA1(53d189205ede16bc0199a6163a11eb39c2e3f2f1) )
+
+ ROM_REGION( 0x040000, "u6", 0 ) // config?
+ ROM_LOAD( "mb-u6.bin", 0x000000, 0x040000, CRC(eb8d3b4f) SHA1(598fb921026685ccfdb0b1804d92b3c6b3313ff4) )
+
+ ROM_REGION( 0x2e5, "mbpals", 0 )
+ ROM_LOAD( "mb-u22-d.bin", 0x000, 0x117, CRC(dc097847) SHA1(305294284d0ffd578f9115b836ef1f9e906c1599) )
+ ROM_LOAD( "mb-u32-d.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) )
+ ROM_LOAD( "mb-u35-65994077_icm-s.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) )
+
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "gb-u9.bin", 0x000000, 0x100000, CRC(eff83f95) SHA1(743f2fb0dd84a83387919db70175aa62f5f6f858) )
+ ROM_LOAD32_BYTE( "gb-u11.bin", 0x000001, 0x100000, CRC(3fc27ae9) SHA1(896da175c11b48fb28dbb0678849b8f167cf5f6e) )
+ ROM_LOAD32_BYTE( "gb-u13.bin", 0x000002, 0x100000, CRC(6ad50f67) SHA1(b32781f06acc3e9929467d6d1212cf0dc757e5b3) )
+ ROM_LOAD32_BYTE( "gb-u15.bin", 0x000003, 0x100000, CRC(6ae46bb3) SHA1(edc51f9a885c483283edb9b0873b980727205a91) )
+ ROM_LOAD32_BYTE( "gb-u8.bin", 0x400000, 0x100000, CRC(7dee3392) SHA1(718333ad5552351702e95a76cc2b61f7c3bf14ac) )
+ ROM_LOAD32_BYTE( "gb-u10.bin", 0x400001, 0x100000, CRC(db88f900) SHA1(83638b46fd7b6e4229fa5295479c9763c2f690c0) )
+ ROM_LOAD32_BYTE( "gb-u12.bin", 0x400002, 0x100000, CRC(fcbada90) SHA1(3206409c9a689e196694831ff5e6ba0fd32d676a) )
+ ROM_LOAD32_BYTE( "gb-u14.bin", 0x400003, 0x100000, CRC(055c7ed6) SHA1(8b8f537b8dfd898d2f9eb123303f9488a6ae4567) )
+
+ // no dedicated sound ROM board present in cage, missing or not needed here? there is an OKI M6585 on the mainboard
+ROM_END
+
+
+// I C Money (set 2)
+ROM_START( atricmona )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2.040", 0x000000, 0x80000, CRC(0c047e55) SHA1(73805271a73aa6a573164625801e021b22b1bfaf) )
+
+ ROM_REGION( 0x040000, "u6", 0 ) // config?
+ ROM_LOAD( "u6.020", 0x000000, 0x040000, CRC(87f0c657) SHA1(fc537474de157c304d35c852fc15d392753df356) )
+
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ // No TMS34020 code or sound data?
+ ROM_LOAD32_BYTE( "atricmona.u9", 0x000000, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "atricmona.u11", 0x000001, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "atricmona.u13", 0x000002, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "atricmona.u15", 0x000003, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "atricmona.u8", 0x400000, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "atricmona.u10", 0x400001, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "atricmona.u12", 0x400002, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "atricmona.u14", 0x400003, 0x100000, NO_DUMP )
+
+ ROM_REGION( 0x400000, "pals", 0 ) // pal (converted from JED)
+ ROM_LOAD( "u35.bin", 0x000000, 0x0002dd, CRC(6c7f3f2a) SHA1(826e5b6bddbc77a19713345c82e388a994c23262) )
+ROM_END
+// Jumping Jackpots (Russia)
ROM_START( jumpjkpt )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "o_-jujp01-abaaa-ca-std_u02.bin", 0x0000, 0x100000, CRC(d384b881) SHA1(0816fd33578b28c605978dd306b110c421bf5793) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "o_-jujp01-abaaa-ca-std_u02.bin", 0x000000, 0x100000, CRC(d384b881) SHA1(0816fd33578b28c605978dd306b110c421bf5793) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "jujp01-a-za-std_-5_u06.bin", 0x0000, 0x020000, CRC(0f19b0c1) SHA1(c118215bcf502287277c34e6f389af70ab945674) )
+ ROM_LOAD( "jujp01-a-za-std_-5_u06.bin", 0x000000, 0x020000, CRC(0f19b0c1) SHA1(c118215bcf502287277c34e6f389af70ab945674) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
ROM_LOAD32_BYTE( "jujp01-a_-b-std_-5_u09.bin", 0x000000, 0x100000, CRC(7d3cb293) SHA1(e9f102620f01309327678e115e206fd29dcffde6) )
ROM_LOAD32_BYTE( "jujp01-a_-b-std_-5_u11.bin", 0x000001, 0x100000, CRC(d92c0c7e) SHA1(680032b81e76c74539ff56f8c5fc7d4d16fd4793) )
ROM_LOAD32_BYTE( "jujp01-a_-b-std_-5_u13.bin", 0x000002, 0x100000, CRC(555ced70) SHA1(1ec115a2e2a1c171070775913a3eb831efc81dab) )
@@ -1140,22 +1356,22 @@ ROM_START( jumpjkpt )
ROM_LOAD32_BYTE( "jujp01-a_-b-std_-5_u14.bin", 0x400003, 0x100000, CRC(c4754688) SHA1(1bf172d28795a7313586e9874036be0f7864d7c2) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "jujp01-aa-a-std_-_u18.bin", 0x0000, 0x100000, CRC(fe453a28) SHA1(ec39ac2bd8c7014f61a8db1a8896c771532b6d3b) )
- ROM_LOAD( "jujp01-aa-a-std_-_u19.bin", 0x0000, 0x100000, CRC(273c7212) SHA1(0689fd7e3862d01f258fba9773f460ea4803d0a3) )
- ROM_LOAD( "jujp01-aa-a-std_-_u20.bin", 0x0000, 0x100000, CRC(45290607) SHA1(f7af3cf323c7e9c3b1f86b230e73012c56fbf103) )
- ROM_LOAD( "jujp01-aa-a-std_-_u21.bin", 0x0000, 0x100000, CRC(ca8d5cf5) SHA1(17202eb6235ecbfd6301269fe36887c078fd6292) )
+ ROM_LOAD( "jujp01-aa-a-std_-_u18.bin", 0x000000, 0x100000, CRC(fe453a28) SHA1(ec39ac2bd8c7014f61a8db1a8896c771532b6d3b) )
+ ROM_LOAD( "jujp01-aa-a-std_-_u19.bin", 0x000000, 0x100000, CRC(273c7212) SHA1(0689fd7e3862d01f258fba9773f460ea4803d0a3) )
+ ROM_LOAD( "jujp01-aa-a-std_-_u20.bin", 0x000000, 0x100000, CRC(45290607) SHA1(f7af3cf323c7e9c3b1f86b230e73012c56fbf103) )
+ ROM_LOAD( "jujp01-aa-a-std_-_u21.bin", 0x000000, 0x100000, CRC(ca8d5cf5) SHA1(17202eb6235ecbfd6301269fe36887c078fd6292) )
ROM_END
-
+// Mushroom Magic (Russia)
ROM_START( mushmagi )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "mb-u02.bin", 0x0000, 0x100000, CRC(bb36ee69) SHA1(3a9ce792941250277c5a8f53bd94f7c38b2e5130) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "mb-u02.bin", 0x000000, 0x100000, CRC(bb36ee69) SHA1(3a9ce792941250277c5a8f53bd94f7c38b2e5130) )
ROM_REGION( 0x080000, "u6", 0 ) // config?
- ROM_LOAD( "mb-u06.bin", 0x0000, 0x080000, CRC(10e3f3f6) SHA1(458f5be7ee01e361b4c31c099fc721521fbe3864) )
+ ROM_LOAD( "mb-u06.bin", 0x000000, 0x080000, CRC(10e3f3f6) SHA1(458f5be7ee01e361b4c31c099fc721521fbe3864) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
ROM_LOAD32_BYTE( "gb-u09.bin", 0x000000, 0x100000, CRC(f2d82cee) SHA1(78a15f757bbbb1f4f0a5ab889a9807d886a543a8) )
ROM_LOAD32_BYTE( "gb-u11.bin", 0x000001, 0x100000, CRC(3ead238a) SHA1(21956bd6b24e3281db70b6d28d97ee7bbd9ae75f) )
ROM_LOAD32_BYTE( "gb-u13.bin", 0x000002, 0x100000, CRC(58c191e6) SHA1(b0f86f407958de2b8e0f5e61288f8b6c7a2c0c2f) )
@@ -1166,22 +1382,23 @@ ROM_START( mushmagi )
ROM_LOAD32_BYTE( "gb-u14.bin", 0x400003, 0x100000, CRC(952ada33) SHA1(976492f12db27cedc3219e29536a3256d7ae5675) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "sb-u18.bin", 0x0000, 0x100000, CRC(3ee4c1bd) SHA1(6885585ca1f40790eafac3161de3bcca9a2117c7) )
- ROM_LOAD( "sb-u19.bin", 0x0000, 0x100000, CRC(70279081) SHA1(15933d81af85b2c6f831e765f2a4e4f0e44fdc18) )
- ROM_LOAD( "sb-u20.bin", 0x0000, 0x100000, CRC(f92276e5) SHA1(62628e9ef166607c42e873d116116dee6bf9b623) )
- ROM_LOAD( "sb-u21.bin", 0x0000, 0x100000, CRC(3c168653) SHA1(ce77851f64cf14e5b074f667d3a723097f78496f) )
+ ROM_LOAD( "sb-u18.bin", 0x000000, 0x100000, CRC(3ee4c1bd) SHA1(6885585ca1f40790eafac3161de3bcca9a2117c7) )
+ ROM_LOAD( "sb-u19.bin", 0x000000, 0x100000, CRC(70279081) SHA1(15933d81af85b2c6f831e765f2a4e4f0e44fdc18) )
+ ROM_LOAD( "sb-u20.bin", 0x000000, 0x100000, CRC(f92276e5) SHA1(62628e9ef166607c42e873d116116dee6bf9b623) )
+ ROM_LOAD( "sb-u21.bin", 0x000000, 0x100000, CRC(3c168653) SHA1(ce77851f64cf14e5b074f667d3a723097f78496f) )
ROM_END
+// Spell Master (Russia)
ROM_START( splmastr )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "mb-u2 24e1.bin", 0x0000, 0x100000, CRC(e601e214) SHA1(7ff898245198350ea53ca1c3a71b491d55f60880) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "mb-u2 24e1.bin", 0x000000, 0x100000, CRC(e601e214) SHA1(7ff898245198350ea53ca1c3a71b491d55f60880) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "mb-u6 ebda.bin", 0x0000, 0x020000, CRC(7e73e9c7) SHA1(a8b00af9a3bf936e54391a96777ac78773b3cee0) )
- ROM_LOAD( "speel master.bin", 0x0000, 0x020000, CRC(04168ab7) SHA1(70a387599bf6629a9a8a6ff38ed0d40e92e54504) )
+ ROM_LOAD( "mb-u6 ebda.bin", 0x000000, 0x020000, CRC(7e73e9c7) SHA1(a8b00af9a3bf936e54391a96777ac78773b3cee0) )
+ ROM_LOAD( "speel master.bin", 0x000000, 0x020000, CRC(04168ab7) SHA1(70a387599bf6629a9a8a6ff38ed0d40e92e54504) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
ROM_LOAD32_BYTE( "gb-u9 b408.bin", 0x000000, 0x100000, CRC(e7146c72) SHA1(21b143ae93a73dd59b652a0033ceaa9116575239) )
ROM_LOAD32_BYTE( "gb-u11 abf6.bin", 0x000001, 0x100000, CRC(de54f849) SHA1(b628a69c8ad5f81543cd78c458dd9348226114a7) )
ROM_LOAD32_BYTE( "gb-u13 6526.bin", 0x000002, 0x100000, CRC(e5744b4f) SHA1(8c36b087dc4fad6cd463abea5b1e7c0bd9c30074) )
@@ -1192,24 +1409,79 @@ ROM_START( splmastr )
ROM_LOAD32_BYTE( "gb-u14 f911.bin", 0x400003, 0x100000, CRC(6d77b13c) SHA1(dab85782a98cc5c21f236044dea0c7617b40469b) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "sb-u18 e1e5.bin", 0x0000, 0x100000, CRC(b0eb4ceb) SHA1(410990faeef6e371205a4344622b88d0db1e09e9) )
- ROM_LOAD( "sb-u19 7d08.bin", 0x0000, 0x100000, CRC(70279081) SHA1(15933d81af85b2c6f831e765f2a4e4f0e44fdc18) )
- ROM_LOAD( "sb-u20 06ad.bin", 0x0000, 0x100000, CRC(fe354878) SHA1(44abb1a6ba5234c4909ef9f0a2f8b353b0695ff0) )
- ROM_LOAD( "sb-u21 4f56.bin", 0x0000, 0x100000, CRC(54d631a2) SHA1(1fe4278642b5c01e863af5c2ac7ee38d7c94d776) )
+ ROM_LOAD( "sb-u18 e1e5.bin", 0x000000, 0x100000, CRC(b0eb4ceb) SHA1(410990faeef6e371205a4344622b88d0db1e09e9) )
+ ROM_LOAD( "sb-u19 7d08.bin", 0x000000, 0x100000, CRC(70279081) SHA1(15933d81af85b2c6f831e765f2a4e4f0e44fdc18) )
+ ROM_LOAD( "sb-u20 06ad.bin", 0x000000, 0x100000, CRC(fe354878) SHA1(44abb1a6ba5234c4909ef9f0a2f8b353b0695ff0) )
+ ROM_LOAD( "sb-u21 4f56.bin", 0x000000, 0x100000, CRC(54d631a2) SHA1(1fe4278642b5c01e863af5c2ac7ee38d7c94d776) )
+ROM_END
+
+
+// Sphinx II
+ROM_START( sphinxii )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "sphinx2_3ab9.u2", 0x000000, 0x100000, CRC(5e29a69b) SHA1(fbbff1187390a27dd385c091bb69dc4d73c2a72f) )
+
+ ROM_REGION( 0x020000, "u6", 0 ) // config?
+ ROM_LOAD( "sphinx2.u6", 0x000000, 0x020000, CRC(4d37999a) SHA1(678dc788cfe00ab2599df08941660324793d7f6c) )
+
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "gpg.u9", 0x000000, 0x100000, CRC(3714e7af) SHA1(5213207ef525367f82a1ce5e49751c2d987a05c9) )
+ ROM_LOAD32_BYTE( "gpg.u11", 0x000001, 0x100000, CRC(9d7c4f17) SHA1(5ffe06a23642f3915087f6499bf83aec8ea7a4f2) )
+ ROM_LOAD32_BYTE( "gpg.u13", 0x000002, 0x100000, CRC(07a167bd) SHA1(451e0fb2c268618f554f3782aad78056f66fbbbc) )
+ ROM_LOAD32_BYTE( "gpg.u15", 0x000003, 0x100000, CRC(552ca8bf) SHA1(091c5fa821d33facda8810e3f3ed1ec0c84dd055) )
+ ROM_LOAD32_BYTE( "gpg.u8", 0x400000, 0x100000, CRC(a719fd7f) SHA1(de09676375f21f816828fde8a6b7ae5ed741fc4c) )
+ ROM_LOAD32_BYTE( "gpg.u10", 0x400001, 0x100000, CRC(9886a639) SHA1(752b759269a401493bce41590691feafe0bf2998) )
+ ROM_LOAD32_BYTE( "gpg.u12", 0x400002, 0x100000, CRC(6f6dd839) SHA1(01ffa589df669ebe4825418617a532e128c5514d) )
+ ROM_LOAD32_BYTE( "gpg.u14", 0x400003, 0x100000, NO_DUMP )
+
+ ROM_REGION( 0x400000, "u18u21", 0 ) // sound
+ ROM_LOAD( "spxsndu18.080", 0x000000, 0x100000, CRC(52da6133) SHA1(51ba2c586ffeddca1d8e345c644525cbccffdba8) )
+ ROM_LOAD( "spxsndu19.080", 0x000000, 0x100000, CRC(3aed50bc) SHA1(c7abc91dbddf9bccac9cc9a5b73fbd9b22878ca9) )
+ ROM_LOAD( "spxsndu20.080", 0x000000, 0x100000, CRC(0a8ac239) SHA1(7d58abaff09a7e61d1380121d085a5601549e908) )
+ ROM_LOAD( "spxsndu21.080", 0x000000, 0x100000, CRC(d4621e8d) SHA1(6ec49c52b88e648dbe2fe3c47868946369d717cf) )
ROM_END
+
+// Sphinx II (Russia)
+ROM_START( sphinxiir )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(943d35a7) SHA1(17ead3a7f084b5e384f99903f57360ff9e133026) )
+
+ ROM_REGION( 0x020000, "u6", 0 ) // config?
+ ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(4d37999a) SHA1(678dc788cfe00ab2599df08941660324793d7f6c) )
+ ROM_LOAD( "sphinx ii.bin", 0x000000, 0x020000, CRC(7fae09a6) SHA1(5c26798337d3691d81f853ee447cb7119fce7b14) )
+
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(c54e4e07) SHA1(1249494773dae044a7bb4381b084e3d2e14367d7) )
+ ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(5c1e82ab) SHA1(f22ba1dc6799388e855d8f3064b96d568619a75b) )
+ ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(fb49ae3e) SHA1(bf0cb5815639ebc3db3333249ab2ed81d3bdc684) )
+ ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(ac741fb5) SHA1(a52eaa4a43cd522885d5d9b024c0646279dffe25) )
+ ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(ca4c1626) SHA1(6a883f713272ea70fd0757f9d0e07379925973a3) )
+ ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(b64deef1) SHA1(b3c4baef7137af5b25402cec474f92333d93e727) )
+ ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(cf5a97b7) SHA1(6cb490a5a0c9e908593beff3aee374eddef19a5f) )
+ ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(98730028) SHA1(86b782bea8caf33dab9656c93856fc345977f7cc) )
+
+ ROM_REGION( 0x400000, "u18u21", 0 ) // sound
+ ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(52da6133) SHA1(51ba2c586ffeddca1d8e345c644525cbccffdba8) )
+ ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(3aed50bc) SHA1(c7abc91dbddf9bccac9cc9a5b73fbd9b22878ca9) )
+ ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(0a8ac239) SHA1(7d58abaff09a7e61d1380121d085a5601549e908) )
+ ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(d4621e8d) SHA1(6ec49c52b88e648dbe2fe3c47868946369d717cf) )
+ROM_END
+
+
+// Taj Mahal (Russia)
ROM_START( tajmah )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "ovtddfxe.8u2", 0x0000, 0x100000, CRC(83639f76) SHA1(f982222f8ae635c34413b316fe55de76fdc8535e) )
- ROM_LOAD( "vtddfxd.801", 0x0000, 0x100000, CRC(b0eb5468) SHA1(09e8ceca4cf3bea6447b9c9c0ee5776cbd32f098) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "ovtddfxe.8u2", 0x000000, 0x100000, CRC(83639f76) SHA1(f982222f8ae635c34413b316fe55de76fdc8535e) )
+ ROM_LOAD( "vtddfxd.801", 0x000000, 0x100000, CRC(b0eb5468) SHA1(09e8ceca4cf3bea6447b9c9c0ee5776cbd32f098) )
ROM_REGION( 0x040000, "u6", 0 ) // config?
- ROM_LOAD( "590f4-d.u6", 0x0000, 0x040000, CRC(b346765d) SHA1(567ae4fa740a4bd26485b72f3fd0e57d7a18512e) )
- ROM_LOAD( "t510f14b.2u6", 0x0000, 0x040000, CRC(ff6add95) SHA1(b1fa169e61a774d1ce5c0c1b4f80baa289ca696e) )
- ROM_LOAD( "t595f03c.2u6", 0x0000, 0x040000, CRC(b173164c) SHA1(91390cc2568de1c61df6b427bec9060fa7b0829a) )
- ROM_LOAD( "t595f07b.u6", 0x0000, 0x040000, CRC(7ef35e2f) SHA1(d2b4d392d66784900bf8413d4adbd1e37de11a67) )
+ ROM_LOAD( "590f4-d.u6", 0x000000, 0x040000, CRC(b346765d) SHA1(567ae4fa740a4bd26485b72f3fd0e57d7a18512e) )
+ ROM_LOAD( "t510f14b.2u6", 0x000000, 0x040000, CRC(ff6add95) SHA1(b1fa169e61a774d1ce5c0c1b4f80baa289ca696e) )
+ ROM_LOAD( "t595f03c.2u6", 0x000000, 0x040000, CRC(b173164c) SHA1(91390cc2568de1c61df6b427bec9060fa7b0829a) )
+ ROM_LOAD( "t595f07b.u6", 0x000000, 0x040000, CRC(7ef35e2f) SHA1(d2b4d392d66784900bf8413d4adbd1e37de11a67) )
- ROM_REGION16_LE( 0x800000, "user2", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION16_LE( 0x800000, "user2", 0 ) // TMS34020APCM-40 code (34020)
ROM_LOAD32_BYTE( "t5_d01d.u9", 0x400000, 0x080000, CRC(d1a0e88b) SHA1(c68c9be2413725b698fccda74c120a732bc1b5ab) )
ROM_LOAD32_BYTE( "t5_d01d.u11", 0x400001, 0x080000, CRC(e063b35e) SHA1(54fb8831e4529b85740f22ddb181649ebfad8f03) )
ROM_LOAD32_BYTE( "t5_d01d.u13", 0x400002, 0x080000, CRC(9d3f04d2) SHA1(a6f6b564f7165aa992bc0dd8c090fa8cecd1953c) )
@@ -1219,7 +1491,7 @@ ROM_START( tajmah )
ROM_LOAD32_BYTE( "t5_d01d.u12", 0x600002, 0x080000, CRC(c2ca0b17) SHA1(cfd553f1943552620f6d324f767fd1f1957e8e25) )
ROM_LOAD32_BYTE( "t5_d01d.u14", 0x600003, 0x080000, CRC(0d512057) SHA1(f5f43dad25940193516d467725ecbe1989cc9003) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) - is this an alt set, or a 2nd video board? */
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) - is this an alt set, or a 2nd video board?
ROM_LOAD32_BYTE( "u9", 0x400000, 0x080000, CRC(157b9860) SHA1(6e04f035a945a63617e32b196fa0c1b6fd26b281) )
ROM_LOAD32_BYTE( "u11", 0x400001, 0x080000, CRC(6aa2cecc) SHA1(7b1d6bb81fed7413f69e926e7cefe1ee171453b4) )
ROM_LOAD32_BYTE( "u13", 0x400002, 0x080000, CRC(5c091b7a) SHA1(d1c758a6d155bbc7359f3f46a29bac44d96ec4b1) )
@@ -1232,27 +1504,28 @@ ROM_START( tajmah )
// sound (missing or not needed here? there is an OKI M6585 on the mainboard)
/*
ROM_REGION( 0x400000, "u18u21", 0 )
- ROM_LOAD( "u18", 0x0000, 0x100000, NO_DUMP )
- ROM_LOAD( "u19", 0x0000, 0x100000, NO_DUMP )
- ROM_LOAD( "u20", 0x0000, 0x100000, NO_DUMP )
- ROM_LOAD( "u21", 0x0000, 0x100000, NO_DUMP )
+ ROM_LOAD( "u18", 0x000000, 0x100000, NO_DUMP )
+ ROM_LOAD( "u19", 0x000000, 0x100000, NO_DUMP )
+ ROM_LOAD( "u20", 0x000000, 0x100000, NO_DUMP )
+ ROM_LOAD( "u21", 0x000000, 0x100000, NO_DUMP )
*/
ROM_END
+// Three Wishes Red (Russia)
ROM_START( 3wishrd )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "3w-baca.8u2", 0x0000, 0x100000, CRC(14ca9f18) SHA1(8bf5eaa11ca70d14c7ed69a17c4610ecca6f76f8) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "3w-baca.8u2", 0x000000, 0x100000, CRC(14ca9f18) SHA1(8bf5eaa11ca70d14c7ed69a17c4610ecca6f76f8) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "3590a25a.1u6", 0x0000, 0x020000, CRC(8a10399e) SHA1(9658705821cdd39e1022a2b63dd61355d44c23f6) )
- ROM_LOAD( "3590a26a.1u6", 0x0000, 0x020000, CRC(86ec866d) SHA1(1fbcbfec49900e45ed7866857b0314de07020405) )
- ROM_LOAD( "35b0a03a.1u6", 0x0000, 0x020000, CRC(a25650d7) SHA1(72c1c58cf933c7b6fc85c071f48768e482e99ff7) )
- ROM_LOAD( "35b0a04a.1u6", 0x0000, 0x020000, CRC(36930b7c) SHA1(23d578450fc3185389058da367345ac20883b6f4) )
- ROM_LOAD( "three wishes.bin", 0x0000, 0x020000, CRC(37d85da7) SHA1(64db855e06dab5ea85c669bd72f1e8ee8856607a) )
- ROM_LOAD( "590a13a.1u6", 0x0000, 0x020000, CRC(3e674907) SHA1(ca933c416764ebf355d8e04f871f8421c9039078) )
-
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_LOAD( "3590a25a.1u6", 0x000000, 0x020000, CRC(8a10399e) SHA1(9658705821cdd39e1022a2b63dd61355d44c23f6) )
+ ROM_LOAD( "3590a26a.1u6", 0x000000, 0x020000, CRC(86ec866d) SHA1(1fbcbfec49900e45ed7866857b0314de07020405) )
+ ROM_LOAD( "35b0a03a.1u6", 0x000000, 0x020000, CRC(a25650d7) SHA1(72c1c58cf933c7b6fc85c071f48768e482e99ff7) )
+ ROM_LOAD( "35b0a04a.1u6", 0x000000, 0x020000, CRC(36930b7c) SHA1(23d578450fc3185389058da367345ac20883b6f4) )
+ ROM_LOAD( "three wishes.bin", 0x000000, 0x020000, CRC(37d85da7) SHA1(64db855e06dab5ea85c669bd72f1e8ee8856607a) )
+ ROM_LOAD( "590a13a.1u6", 0x000000, 0x020000, CRC(3e674907) SHA1(ca933c416764ebf355d8e04f871f8421c9039078) )
+
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
ROM_LOAD32_BYTE( "tw5b01a.8u9", 0x000000, 0x100000, CRC(2410659a) SHA1(2bcd2539c0e3e7389c27c21e58d9199b9c7c742e) )
ROM_LOAD32_BYTE( "tw5b01a.u11", 0x000001, 0x100000, CRC(44ca9ce1) SHA1(b1c6d83f749202c072c6ce99c0470a31cfab8986) )
ROM_LOAD32_BYTE( "tw5b01a.u13", 0x000002, 0x100000, CRC(6c60097b) SHA1(f5ddb86b481b7b95d6ec151b37d662b583817813) )
@@ -1263,25 +1536,47 @@ ROM_START( 3wishrd )
ROM_LOAD32_BYTE( "tw5b01a.u14", 0x400003, 0x100000, CRC(85f30657) SHA1(e055e1fdeeab2fd82bb23b80416b421eb9143967) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "wishaaa.u18", 0x0000, 0x100000, CRC(c258c2c7) SHA1(900497e2e023e2ac1b62c5dabfaf95e5bf0b855b) )
- ROM_LOAD( "wishaaa.u19", 0x0000, 0x100000, CRC(09d186a9) SHA1(1d784fd3591583c99fac516a8c4cf47c3932d084) )
- ROM_LOAD( "wishaaa.u20", 0x0000, 0x100000, CRC(be187745) SHA1(c96458bbc9164a4ca3bca94f0ac5a4fe9f1b1dfa) )
- ROM_LOAD( "wishaaa.u21", 0x0000, 0x100000, CRC(466b34e1) SHA1(3f5236ea78bde8bfb998367e913f42d23b4c17f1) )
+ ROM_LOAD( "wishaaa.u18", 0x000000, 0x100000, CRC(c258c2c7) SHA1(900497e2e023e2ac1b62c5dabfaf95e5bf0b855b) )
+ ROM_LOAD( "wishaaa.u19", 0x000000, 0x100000, CRC(09d186a9) SHA1(1d784fd3591583c99fac516a8c4cf47c3932d084) )
+ ROM_LOAD( "wishaaa.u20", 0x000000, 0x100000, CRC(be187745) SHA1(c96458bbc9164a4ca3bca94f0ac5a4fe9f1b1dfa) )
+ ROM_LOAD( "wishaaa.u21", 0x000000, 0x100000, CRC(466b34e1) SHA1(3f5236ea78bde8bfb998367e913f42d23b4c17f1) )
+ROM_END
+
+
+// Typhoon Lagoon
+ROM_START( tylagoon )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "typhoonu241co", 0x000000, 0x100000, CRC(5a619390) SHA1(c96ed082fcf6650da0770ff2fdff0ba387bf639e) )
+
+ ROM_REGION( 0x020000, "u6", 0 ) // config?
+ ROM_LOAD( "typhoonu69b00", 0x000000, 0x020000, CRC(31077e74) SHA1(953b63c91b3ace5d9e5af01c355bdbc7cbc8005f) )
+
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ // No TMS34020 code or sound data?
+ ROM_LOAD32_BYTE( "tylagoon.u9", 0x000000, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "tylagoon.u11", 0x000001, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "tylagoon.u13", 0x000002, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "tylagoon.u15", 0x000003, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "tylagoon.u8" , 0x400000, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "tylagoon.u10", 0x400001, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "tylagoon.u12", 0x400002, 0x100000, NO_DUMP )
+ ROM_LOAD32_BYTE( "tylagoon.u14", 0x400003, 0x100000, NO_DUMP )
ROM_END
+// Wild Thing
ROM_START( atrwild )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "mb-u2.bin", 0x0000, 0x80000, CRC(e72a2339) SHA1(ad191dbbd0ac1f3288c45e336f27f693877273a9) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "mb-u2.bin", 0x000000, 0x80000, CRC(e72a2339) SHA1(ad191dbbd0ac1f3288c45e336f27f693877273a9) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "mb-u6.bin", 0x0000, 0x020000, CRC(f310e88d) SHA1(5d354e2a9de9eff27e66a4b1ca0925b19c6c86cc) )
+ ROM_LOAD( "mb-u6.bin", 0x000000, 0x020000, CRC(f310e88d) SHA1(5d354e2a9de9eff27e66a4b1ca0925b19c6c86cc) )
ROM_REGION( 0x117, "mbpals", 0 )
ROM_LOAD( "mb-u22-d.bin", 0x000, 0x117, CRC(dc097847) SHA1(305294284d0ffd578f9115b836ef1f9e906c1599) )
ROM_LOAD( "mb-u32-b.bin", 0x000, 0x117, CRC(78a9310b) SHA1(deb84d96b0411b05c54fb2c998bed020a37d5005) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
ROM_LOAD32_BYTE( "u8.bin", 0x600000, 0x080000, CRC(4acafd98) SHA1(d516c55ddce1470e4e19725b6d7dfd5f70ba1129) )
ROM_LOAD32_BYTE( "u10.bin", 0x600001, 0x080000, CRC(804800be) SHA1(5fb2a5479c2a7073c2abd40e14a162fbf783eb70) )
ROM_LOAD32_BYTE( "u12.bin", 0x600002, 0x080000, CRC(0845ff27) SHA1(5012569a79c9fcbee178a0cee45d25769a1cf9be) )
@@ -1290,73 +1585,44 @@ ROM_START( atrwild )
// no dedicated sound ROM board present in cage, missing or not needed here? there is an OKI M6585 on the mainboard
ROM_END
-ROM_START( atricmon )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "mb-u2.bin", 0x0000, 0x80000, CRC(0fc3f42f) SHA1(53d189205ede16bc0199a6163a11eb39c2e3f2f1) )
-
- ROM_REGION( 0x040000, "u6", 0 ) // config?
- ROM_LOAD( "mb-u6.bin", 0x0000, 0x040000, CRC(eb8d3b4f) SHA1(598fb921026685ccfdb0b1804d92b3c6b3313ff4) )
-
- ROM_REGION( 0x2e5, "mbpals", 0 )
- ROM_LOAD( "mb-u22-d.bin", 0x000, 0x117, CRC(dc097847) SHA1(305294284d0ffd578f9115b836ef1f9e906c1599) )
- ROM_LOAD( "mb-u32-d.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) )
- ROM_LOAD( "mb-u35-65994077_icm-s.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) )
+/********** Sets below on different hardware? **********/
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "gb-u9.bin", 0x000000, 0x100000, CRC(eff83f95) SHA1(743f2fb0dd84a83387919db70175aa62f5f6f858) )
- ROM_LOAD32_BYTE( "gb-u11.bin", 0x000001, 0x100000, CRC(3fc27ae9) SHA1(896da175c11b48fb28dbb0678849b8f167cf5f6e) )
- ROM_LOAD32_BYTE( "gb-u13.bin", 0x000002, 0x100000, CRC(6ad50f67) SHA1(b32781f06acc3e9929467d6d1212cf0dc757e5b3) )
- ROM_LOAD32_BYTE( "gb-u15.bin", 0x000003, 0x100000, CRC(6ae46bb3) SHA1(edc51f9a885c483283edb9b0873b980727205a91) )
- ROM_LOAD32_BYTE( "gb-u8.bin", 0x400000, 0x100000, CRC(7dee3392) SHA1(718333ad5552351702e95a76cc2b61f7c3bf14ac) )
- ROM_LOAD32_BYTE( "gb-u10.bin", 0x400001, 0x100000, CRC(db88f900) SHA1(83638b46fd7b6e4229fa5295479c9763c2f690c0) )
- ROM_LOAD32_BYTE( "gb-u12.bin", 0x400002, 0x100000, CRC(fcbada90) SHA1(3206409c9a689e196694831ff5e6ba0fd32d676a) )
- ROM_LOAD32_BYTE( "gb-u14.bin", 0x400003, 0x100000, CRC(055c7ed6) SHA1(8b8f537b8dfd898d2f9eb123303f9488a6ae4567) )
-
- // no dedicated sound ROM board present in cage, missing or not needed here? there is an OKI M6585 on the mainboard
-ROM_END
-
-ROM_START( atrbonpk )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "mb-u2.bin", 0x0000, 0x80000, CRC(7f9d9d3c) SHA1(501d3f1482b3c67cbc94a3af40ef31fb5a6e7921) )
-
- ROM_REGION( 0x080000, "u6", 0 ) // config?
- ROM_LOAD( "mb-u6.bin", 0x0000, 0x080000, CRC(0b8d47ba) SHA1(aa1d5b37c330f4f44c1af5caca24bbf670c0bbcb) )
-
- ROM_REGION( 0x2e5, "mbpals", 0 )
- ROM_LOAD( "mb-u22-d.bin", 0x000, 0x117, CRC(dc097847) SHA1(305294284d0ffd578f9115b836ef1f9e906c1599) )
- ROM_LOAD( "mb-u32-i.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8))
- ROM_LOAD( "mb-u35-poke-s6366.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) )
+// Bear Necessities (Russia)
+ROM_START( bearnec )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u2_0_-bene01-afaaa-ce-rus_b178.bin", 0x000000, 0x100000, CRC(fc71f0b8) SHA1(6c124211614101ef151fe405bef0ee88277b8d2b) )
- ROM_REGION( 0x117, "gfxpals", 0 )
- ROM_LOAD( "u2-f.bin", 0x000, 0x117, CRC(eb5548c2) SHA1(7ccc6a7de0c0765e0da3563f3ee83dd99acc50bf) )
- ROM_LOAD( "u3-i.bin", 0x000, 0x117, CRC(769f7b32) SHA1(72df7c92367403a95c5bda3d6a643cc8fc24e153) )
- ROM_LOAD( "u4-c.bin", 0x000, 0x117, CRC(91e043ea) SHA1(d4d0c721c6c37cbe8babe148bc9887038cdf4820) )
- ROM_LOAD( "u5-a.bin", 0x000, 0x117, CRC(18ffc746) SHA1(e32dd74fb535fd4a754579173a788712b3e6ec30) )
- ROM_LOAD( "u6-b.bin", 0x000, 0x117, CRC(2750fb0a) SHA1(3814c4755a215073425a9d6bb048315498962c76) )
- ROM_LOAD( "u7-a.bin", 0x000, 0x117, CRC(adcb2789) SHA1(cc2ebd69abec73d66665faaec19b8706e539b34c) )
+ ROM_REGION( 0x020000, "u6", 0 ) // config?
+ ROM_LOAD( "u6_bene21-e-zg-std_-5-xx-xx-axx_0f78.bin", 0x000000, 0x020000, CRC(d956484f) SHA1(d2d659a4350d7204666234a511ebd4dd7a021d89) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- ROM_LOAD32_BYTE( "u9.bin", 0x400000, 0x080000, CRC(5b8450f1) SHA1(27fc771c3fb824cdb845237324984778fcd0a737) )
- ROM_LOAD32_BYTE( "u11.bin", 0x400001, 0x080000, CRC(c8c52bd1) SHA1(081b8b4c46f18d030329bf519a8ed50385f7c062) )
- ROM_LOAD32_BYTE( "u13.bin", 0x400002, 0x080000, CRC(23164a85) SHA1(e6de6aac28f1dac9ea908aaab9760b56ded1bb91) )
- ROM_LOAD32_BYTE( "u15.bin", 0x400003, 0x080000, CRC(aabbb4ff) SHA1(4a13475929141a4824b15347873cf330f7f7b0d0) )
- ROM_LOAD32_BYTE( "u8.bin", 0x600000, 0x080000, CRC(d6dfde87) SHA1(f3221adecb67ee593d52a1bbbdcee78dde497dbd) )
- ROM_LOAD32_BYTE( "u10.bin", 0x600001, 0x080000, CRC(d81a1f77) SHA1(c3ec3a06dacc3f528c9bcfa7a18e25e0126b1d85) )
- ROM_LOAD32_BYTE( "u12.bin", 0x600002, 0x080000, CRC(4b24dc03) SHA1(f875f09c6d44821b169e111cb1ea3d9716746d5f) )
- ROM_LOAD32_BYTE( "u14.bin", 0x600003, 0x080000, CRC(a6dc78ff) SHA1(96457601e7f90ce14a88765f70accc07d7236d30) )
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
+ // not valid TMS code, looks like some x86 drive image split into ROMs?
+ ROM_LOAD( "u09_a632.bin", 0x000000, 0x100000, CRC(a671b6e8) SHA1(86b97ba98fdd09575a371b5b7f7d42bf2916fe17) )
+ ROM_LOAD( "u11_947b.bin", 0x100000, 0x100000, CRC(3dc60963) SHA1(d824cd4fbe4116744727180762fbf0ffe22e6398) )
+ ROM_LOAD( "u13_60e8.bin", 0x200000, 0x100000, CRC(11b25ede) SHA1(07d4901e985ed9b83d8630b748b82a408e26bac6) )
+ ROM_LOAD( "u15_6c49.bin", 0x300000, 0x100000, CRC(f56e40ac) SHA1(7c5e0bb7a8bafea6ae57b5933c93230478ac74b2) )
+ ROM_LOAD( "u08_f54f.bin", 0x400000, 0x100000, CRC(ce601695) SHA1(585b9e7c57072e7bff03fd34748fdadab6ff1b08) )
+ ROM_LOAD( "u10_d622.bin", 0x500000, 0x100000, CRC(4ac9e636) SHA1(35d0bfd6c456e2cd5d1f950ea58edc8e92e05933) )
+ ROM_LOAD( "u12_8bfa.bin", 0x600000, 0x100000, CRC(fa722d3f) SHA1(1275d0f6f06604e736a03b6031b7aeb46d7c6f07) )
+ ROM_LOAD( "u14_d9c6.bin", 0x700000, 0x100000, CRC(fd9e0ebf) SHA1(0c6b2ddb397994ca62e80cd7c802a778fc287549) )
- // no dedicated sound ROM board present in cage, missing or not needed here? there is an OKI M6585 on the mainboard
+ ROM_REGION( 0x400000, "u18u21", 0 ) // sound
+ ROM_LOAD( "u18_96c0.bin", 0x000000, 0x100000, CRC(0cf7eb95) SHA1(96e6f21b359198b0f893ed69d2bc23ad2db34f33) )
+ ROM_LOAD( "u19_7c1c.bin", 0x000000, 0x100000, CRC(17ca92ee) SHA1(cdc4297c591db33a75ab716db7cf5620c13e8a84) )
+ ROM_LOAD( "u20_3123.bin", 0x000000, 0x100000, CRC(0932857c) SHA1(a30c1e40811581230da72c384679c0c21cced4c2) )
+ ROM_LOAD( "u21_8bb6.bin", 0x000000, 0x100000, CRC(c1a25921) SHA1(d54eb230c8ebde69f00bfab1088b7a39809e5ee2) )
ROM_END
+// Big Cheese (Russia)
ROM_START( abigchs )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "o_-bigc01-afbaa-cc-rus_.8mu02", 0x0000, 0x100000, CRC(969082d8) SHA1(f3bcdc631ac1c346993a8d7300ba6687a32669f7) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "o_-bigc01-afbaa-cc-rus_.8mu02", 0x000000, 0x100000, CRC(969082d8) SHA1(f3bcdc631ac1c346993a8d7300ba6687a32669f7) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "bigc21-d-zf-std_-5-xx-xx-axx.1mu06", 0x0000, 0x020000, CRC(0eb376fb) SHA1(34e1f28e71503ffb0e1e922bd3ba17bad0d37d99) )
+ ROM_LOAD( "bigc21-d-zf-std_-5-xx-xx-axx.1mu06", 0x000000, 0x020000, CRC(0eb376fb) SHA1(34e1f28e71503ffb0e1e922bd3ba17bad0d37d99) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
// not valid TMS code, looks like some x86 drive image split into ROMs?
ROM_LOAD( "bigc01-a_-f-rus_-5_-g101.wigu09", 0x000000, 0x100000, CRC(c87e6bb4) SHA1(387e2498625ff718fccaa7701dd595ee787b9a83) )
ROM_LOAD( "bigc01-a_-f-rus_-5_-g101.wigu11", 0x100000, 0x100000, CRC(c9e9fa7f) SHA1(1698215845f21cfde0274e880d89c66fb3226f04) )
@@ -1368,45 +1634,22 @@ ROM_START( abigchs )
ROM_LOAD( "bigc01-a_-f-rus_-5_-g101.wigu14", 0x700000, 0x100000, CRC(5cf1c75a) SHA1(951289b5cad7ede582da93103acacc41af7622d9) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "bigc01-ba-a-std_-_.8su18", 0x0000, 0x100000, CRC(79c99749) SHA1(bcdd61ff287877833ab6ca56a278b1d68e47608f) )
- ROM_LOAD( "bigc01-ba-a-std_-_.8su19", 0x0000, 0x100000, CRC(deb7a0b5) SHA1(d8526e42273003f8249007df2d8b6ba33b727324) )
- ROM_LOAD( "bigc01-ba-a-std_-_.8su20", 0x0000, 0x100000, CRC(f94998a7) SHA1(c0fced89584ce5b67ba68cd93f1f8348ac36fd26) )
- ROM_LOAD( "bigc01-ba-a-std_-_.8su21", 0x0000, 0x100000, CRC(08a34088) SHA1(009311d126eb78514133f0f6ef28548c42d50b1c) )
+ ROM_LOAD( "bigc01-ba-a-std_-_.8su18", 0x000000, 0x100000, CRC(79c99749) SHA1(bcdd61ff287877833ab6ca56a278b1d68e47608f) )
+ ROM_LOAD( "bigc01-ba-a-std_-_.8su19", 0x000000, 0x100000, CRC(deb7a0b5) SHA1(d8526e42273003f8249007df2d8b6ba33b727324) )
+ ROM_LOAD( "bigc01-ba-a-std_-_.8su20", 0x000000, 0x100000, CRC(f94998a7) SHA1(c0fced89584ce5b67ba68cd93f1f8348ac36fd26) )
+ ROM_LOAD( "bigc01-ba-a-std_-_.8su21", 0x000000, 0x100000, CRC(08a34088) SHA1(009311d126eb78514133f0f6ef28548c42d50b1c) )
ROM_END
-ROM_START( bearnec )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u2_0_-bene01-afaaa-ce-rus_b178.bin", 0x0000, 0x100000, CRC(fc71f0b8) SHA1(6c124211614101ef151fe405bef0ee88277b8d2b) )
-
- ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u6_bene21-e-zg-std_-5-xx-xx-axx_0f78.bin", 0x0000, 0x020000, CRC(d956484f) SHA1(d2d659a4350d7204666234a511ebd4dd7a021d89) )
-
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
- // not valid TMS code, looks like some x86 drive image split into ROMs?
- ROM_LOAD( "u09_a632.bin", 0x000000, 0x100000, CRC(a671b6e8) SHA1(86b97ba98fdd09575a371b5b7f7d42bf2916fe17) )
- ROM_LOAD( "u11_947b.bin", 0x100000, 0x100000, CRC(3dc60963) SHA1(d824cd4fbe4116744727180762fbf0ffe22e6398) )
- ROM_LOAD( "u13_60e8.bin", 0x200000, 0x100000, CRC(11b25ede) SHA1(07d4901e985ed9b83d8630b748b82a408e26bac6) )
- ROM_LOAD( "u15_6c49.bin", 0x300000, 0x100000, CRC(f56e40ac) SHA1(7c5e0bb7a8bafea6ae57b5933c93230478ac74b2) )
- ROM_LOAD( "u08_f54f.bin", 0x400000, 0x100000, CRC(ce601695) SHA1(585b9e7c57072e7bff03fd34748fdadab6ff1b08) )
- ROM_LOAD( "u10_d622.bin", 0x500000, 0x100000, CRC(4ac9e636) SHA1(35d0bfd6c456e2cd5d1f950ea58edc8e92e05933) )
- ROM_LOAD( "u12_8bfa.bin", 0x600000, 0x100000, CRC(fa722d3f) SHA1(1275d0f6f06604e736a03b6031b7aeb46d7c6f07) )
- ROM_LOAD( "u14_d9c6.bin", 0x700000, 0x100000, CRC(fd9e0ebf) SHA1(0c6b2ddb397994ca62e80cd7c802a778fc287549) )
-
- ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "u18_96c0.bin", 0x0000, 0x100000, CRC(0cf7eb95) SHA1(96e6f21b359198b0f893ed69d2bc23ad2db34f33) )
- ROM_LOAD( "u19_7c1c.bin", 0x0000, 0x100000, CRC(17ca92ee) SHA1(cdc4297c591db33a75ab716db7cf5620c13e8a84) )
- ROM_LOAD( "u20_3123.bin", 0x0000, 0x100000, CRC(0932857c) SHA1(a30c1e40811581230da72c384679c0c21cced4c2) )
- ROM_LOAD( "u21_8bb6.bin", 0x0000, 0x100000, CRC(c1a25921) SHA1(d54eb230c8ebde69f00bfab1088b7a39809e5ee2) )
-ROM_END
+// Gold City (Russia)
ROM_START( goldcity )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "o_-goci01-afaaa-cd-rus_.8mu02", 0x0000, 0x100000, CRC(59c19539) SHA1(7c40eee8e534795a44b33140535284b2bc2a9ac5) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "o_-goci01-afaaa-cd-rus_.8mu02", 0x000000, 0x100000, CRC(59c19539) SHA1(7c40eee8e534795a44b33140535284b2bc2a9ac5) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "goci21-e-zf-std_-5-xx-xx-axx.1mu06", 0x0000, 0x020000, CRC(73ab9c41) SHA1(0888923bdaede83f264979c0757894f5cb2e0ec8) )
+ ROM_LOAD( "goci21-e-zf-std_-5-xx-xx-axx.1mu06", 0x000000, 0x020000, CRC(73ab9c41) SHA1(0888923bdaede83f264979c0757894f5cb2e0ec8) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
// not valid TMS code, looks like some x86 drive image split into ROMs?
ROM_LOAD( "goci01-a_-c-rus_-5_-g101.wigu09", 0x000000, 0x100000, CRC(72c9b584) SHA1(1345e7ea34a819fbc01b9a64e9f9c1a2de927dda) )
ROM_LOAD( "goci01-a_-c-rus_-5_-g101.wigu11", 0x100000, 0x100000, CRC(2ebe1d71) SHA1(1b540c3bb9b232f475c3fe2b56c55f473d8c09ee) )
@@ -1420,21 +1663,23 @@ ROM_START( goldcity )
// sound (missing or not needed here? there is an OKI M6585 on the mainboard)
/*
ROM_REGION( 0x400000, "u18u21", 0 )
- ROM_LOAD( "u18", 0x0000, 0x100000, NO_DUMP )
- ROM_LOAD( "u19", 0x0000, 0x100000, NO_DUMP )
- ROM_LOAD( "u20", 0x0000, 0x100000, NO_DUMP )
- ROM_LOAD( "u21", 0x0000, 0x100000, NO_DUMP )
+ ROM_LOAD( "u18", 0x000000, 0x100000, NO_DUMP )
+ ROM_LOAD( "u19", 0x000000, 0x100000, NO_DUMP )
+ ROM_LOAD( "u20", 0x000000, 0x100000, NO_DUMP )
+ ROM_LOAD( "u21", 0x000000, 0x100000, NO_DUMP )
*/
ROM_END
+
+// Santa Maria (Russia)
ROM_START( santam )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */
- ROM_LOAD( "u02_8m_m27c801-100f1_d6f7h.bin", 0x0000, 0x100000, CRC(8c0ed828) SHA1(e24cd0783a4290799db11ca8764b70cd380f2879) )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180)
+ ROM_LOAD( "u02_8m_m27c801-100f1_d6f7h.bin", 0x000000, 0x100000, CRC(8c0ed828) SHA1(e24cd0783a4290799db11ca8764b70cd380f2879) )
ROM_REGION( 0x020000, "u6", 0 ) // config?
- ROM_LOAD( "u06_1m_m27c1001-10f_da21h.bin", 0x0000, 0x020000, CRC(51c0a380) SHA1(861c8b4f825f4bc11dd02ac03dcc2cc7e8c65129) )
+ ROM_LOAD( "u06_1m_m27c1001-10f_da21h.bin", 0x000000, 0x020000, CRC(51c0a380) SHA1(861c8b4f825f4bc11dd02ac03dcc2cc7e8c65129) )
- ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */
+ ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020)
// not valid TMS code, looks like some x86 drive image split into ROMs?
ROM_LOAD( "gb_u09_8m_m27c801-100f1_9df6h.bin", 0x000000, 0x100000, CRC(470ccae5) SHA1(0521af7830cc59102edcc658df4d21a3d669d6db) )
ROM_LOAD( "gb_u11_8m_m27c801-100f1_7621h.bin", 0x100000, 0x100000, CRC(8f9a1031) SHA1(1aca654b62e73f3005e627625bea2b4198c04a99) )
@@ -1446,10 +1691,10 @@ ROM_START( santam )
ROM_LOAD( "gb_u14_8m_m27c801-100f1_2a48h.bin", 0x700000, 0x100000, CRC(bd1fdca3) SHA1(b4bc73ff6900c14525d10fb10ca7f5371351a198) )
ROM_REGION( 0x400000, "u18u21", 0 ) // sound
- ROM_LOAD( "sb_u18_8m_m27c801-100f1_a52eh.bin", 0x0000, 0x100000, CRC(95fe949d) SHA1(953f730a37d8d661cbc8c212c459db3769ac502b) )
- ROM_LOAD( "sb_u19_8m_m27c801-100f1_a71bh.bin", 0x0000, 0x100000, CRC(6eae31f3) SHA1(08fcd8c49b31de874906205a47035a71f87f12d6) )
- ROM_LOAD( "sb_u20_8m_m27c801-100f1_7870h.bin", 0x0000, 0x100000, CRC(27639c24) SHA1(7fdc7e5e684dfbef00450e4c8fa998d73c035895) )
- ROM_LOAD( "sb_u21_8m_m27c801-100f1_94cch.bin", 0x0000, 0x100000, CRC(c740b5be) SHA1(dafe80431197fe22cddd0fc295436edc37256603) )
+ ROM_LOAD( "sb_u18_8m_m27c801-100f1_a52eh.bin", 0x000000, 0x100000, CRC(95fe949d) SHA1(953f730a37d8d661cbc8c212c459db3769ac502b) )
+ ROM_LOAD( "sb_u19_8m_m27c801-100f1_a71bh.bin", 0x000000, 0x100000, CRC(6eae31f3) SHA1(08fcd8c49b31de874906205a47035a71f87f12d6) )
+ ROM_LOAD( "sb_u20_8m_m27c801-100f1_7870h.bin", 0x000000, 0x100000, CRC(27639c24) SHA1(7fdc7e5e684dfbef00450e4c8fa998d73c035895) )
+ ROM_LOAD( "sb_u21_8m_m27c801-100f1_94cch.bin", 0x000000, 0x100000, CRC(c740b5be) SHA1(dafe80431197fe22cddd0fc295436edc37256603) )
ROM_END
} // anonymous namespace
@@ -1457,9 +1702,7 @@ ROM_END
/*
Possible CashLine games:
* Aphrodite
- * Babooshka? (Alternate spelling)
* Break the Spell
- * Chickendales (Alternate spelling?)
* Diver's Dream
* Golden Glen (Alternate spelling?)
* Happy Happy Hippy
@@ -1477,37 +1720,46 @@ ROM_END
GAME( 1999, atronic, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Atronic SetUp/Clear Chips (Russia, set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 1999, atronica, atronic, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Atronic SetUp/Clear Chips (Russia, set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 1999, atronicb, atronic, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Atronic SetUp/Clear Chips", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, atlantca, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Atlantica (Russia) (Atronic) (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, atlantcaa, atlantca, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Atlantica (Russia) (Atronic) (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-GAME( 2002, baboshka, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Baboshka (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, baboshka, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Babooshka (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, baboshkar, baboshka, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Babooshka (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, beachpt, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Beach Patrol (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, atrbtlma, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Beetlemania (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, beetleup, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Beetles Unplugged (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, bigblue, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Big Blue (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 200?, atrbonpk, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Bonus Poker (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, castaway, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, castawaya, castaway, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, cfblue, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Crazy Fruits Blue (Russia) (Atronic) (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, cfbluea, cfblue, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Crazy Fruits Blue (Russia) (Atronic) (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, cfgreen, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Crazy Fruits Green (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, chicken, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Chicken (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, chicdale, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Chickendales (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, aclown, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Clown (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, dncsprt, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Dancing Spirit (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, drmmake, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Dream Maker (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, drmmaker, drmmake, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Dream Maker (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, goldglen, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Golden Glenn (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, haphippy, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Happy Happy Hippy (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, iccash, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "I C Cash (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-GAME( 2002, shpinxii, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Sphinx II (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-GAME( 2002, beachpt, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Beach Patrol (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-GAME( 2002, beetleup, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Beetles Unplugged (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-GAME( 2002, bigblue, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Big Blue (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-GAME( 2002, castaway, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-GAME( 2002, castawaya, castaway, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-GAME( 2002, dncsprt, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Dancing Spirit (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-GAME( 2002, drmmake, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Dream Maker (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 200?, atricmon, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "I C Money (Atronic) (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // related to I C Cash ?
+GAME( 200?, atricmona, atricmon, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "I C Money (Atronic) (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // related to I C Cash ?
GAME( 2002, jumpjkpt, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Jumping Jackpots (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, mushmagi, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Mushroom Magic (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, sphinxii, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Sphinx II (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, sphinxiir, sphinxii, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Sphinx II (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, splmastr, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Spell Master (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, tajmah, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Tajmahal (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, 3wishrd, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Three Wishes Red (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, tylagoon, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Typhoon Lagoon (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 200?, atrwild, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Wild Thing (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-GAME( 200?, atricmon, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "I C Money (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // related to I C Cash ?
-GAME( 200?, atrbonpk, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Bonus Poker (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
// could be different hardware (or just bad dumps) they don't seem to have valid TMS code, instead the video ROMs seem to be some x86 drive image?
-GAME( 2002, abigchs, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Big Cheese (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, bearnec, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Bear Necessities (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+GAME( 2002, abigchs, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Big Cheese (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, goldcity, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Gold City (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
GAME( 2002, santam, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Santa Maria (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
diff --git a/src/mame/misc/cvs.cpp b/src/mame/misc/cvs.cpp
index 5783a7f8b05cc..df31ef4a03be2 100644
--- a/src/mame/misc/cvs.cpp
+++ b/src/mame/misc/cvs.cpp
@@ -687,16 +687,16 @@ void cvs_state::sh_trigger_w(offs_t offset, u8 data)
I have recordings available.
- 0x1884 - Enables an XP8038 frequency generator IC
- Reflected on pin 10 of a 4016.
- The frequency is set by 0x1840, the 8 bit DAC register.
- Not all 0x1840 values were tested, but:
- 0x00 - off, 0x1884 enable has no sound.
- 0x55,0xAA,0xFF - increasing value has higher frequency
+ Reflected on pin 10 of a 4016.
+ The frequency is set by 0x1840, the 8 bit DAC register.
+ Not all 0x1840 values were tested, but:
+ 0x00 - off, 0x1884 enable has no sound.
+ 0x55,0xAA,0xFF - increasing value has higher frequency
- 0x1885 - A scope showed this halving the XP8038 amplitude with a little decay.
- Causes 4016 pin 11 to rise (on) and decay-fall (off)
+ Causes 4016 pin 11 to rise (on) and decay-fall (off)
- 0x1886 - Outputs a complete Galaxia-style ship fire sound, with attack-to-on and decay-to-off.
- 0x1887 - Reflected on an LM380.
- Causes an envelope-like operation on the XP8038 tone with attack (on) and decay (off).
+ Causes an envelope-like operation on the XP8038 tone with attack (on) and decay (off).
*/
data &= 1;
diff --git a/src/mame/misc/goldnpkr.cpp b/src/mame/misc/goldnpkr.cpp
index d25e579333722..275196bb39fc3 100644
--- a/src/mame/misc/goldnpkr.cpp
+++ b/src/mame/misc/goldnpkr.cpp
@@ -6057,7 +6057,7 @@ ROM_END
The second set is a hack of the first with unknown mods.
*/
-ROM_START( potnpkro ) // ICP-1 wires hack set.
+ROM_START( potnpkro ) // ICP-1 wires hack set.
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "7.16a", 0x6000, 0x1000, CRC(2dc5e372) SHA1(70a251efe879bc1122baa78984251041a355c895) )
ROM_LOAD( "x.17a", 0x7000, 0x1000, CRC(1694a0d8) SHA1(bb1132d1e75347ad5156d2b3866aad255f7d53ca) )
@@ -6076,7 +6076,7 @@ ROM_START( potnpkro ) // ICP-1 wires hack set.
ROM_LOAD( "tbp24s10n_wh.bin", 0x0000, 0x0100, CRC(7f31066b) SHA1(15420780ec6b2870fc4539ec3afe4f0c58eedf12) )
ROM_END
-ROM_START( potnpkrp ) // ICP-1 PROM mod set.
+ROM_START( potnpkrp ) // ICP-1 PROM mod set.
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "6.16a", 0x6000, 0x1000, CRC(2dc5e372) SHA1(70a251efe879bc1122baa78984251041a355c895) )
ROM_LOAD( "95_09_hn71_7.17a", 0x7000, 0x1000, CRC(2353317a) SHA1(18bf8cfe30aaa4b05207cc250ec1c024bc19ed56) )
diff --git a/src/mame/misc/triviaquiz.cpp b/src/mame/misc/triviaquiz.cpp
index 7b7eae44dcbac..ea9a4eb899bc4 100644
--- a/src/mame/misc/triviaquiz.cpp
+++ b/src/mame/misc/triviaquiz.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Dirk Best, Ivan Vangelista
+// copyright-holders:Dirk Best
/*
Trivia Quiz by Intermatic Manufacturing Ltd.
1985
diff --git a/src/mame/namco/mappy.cpp b/src/mame/namco/mappy.cpp
index de9de2ec171a2..e74b593705ea3 100644
--- a/src/mame/namco/mappy.cpp
+++ b/src/mame/namco/mappy.cpp
@@ -23,7 +23,7 @@ They can be divided in three "families":
Despite the hardware differences, the memory map is almost identical to
Super Pacman, and that's why it's included in this driver.
There is no information about the custom ICs used by this board. The video
- section is probably more similar to Gaplus than to Supr Pacman: the sprite
+ section is probably more similar to Gaplus than to Super Pacman: the sprite
generator might be a 21XX (though Gaplus doesn't use 8x8 sprites), and the
00XX and 04XX address generators are probably replaced by the single CUS20
(which also handles the flip screen flag).
@@ -59,7 +59,7 @@ Video board:
sprites; in Mappy it handles the 4bpp sprites, while the tilemap is handled by
standard LS components.
-The I/O interface chips vary from game to game (see machine/namcoio.c)
+The I/O interface chips vary from game to game (see namco/namcoio.cpp)
Super Pac-Man memory map
@@ -565,38 +565,38 @@ S: service switch (the one that adds a credit, not the one to enter service mode
*
*************************************/
-#define MASTER_CLOCK (XTAL(18'432'000))
+static constexpr XTAL MASTER_CLOCK = XTAL(18'432'000);
-#define PIXEL_CLOCK (MASTER_CLOCK/3)
+static constexpr XTAL PIXEL_CLOCK = MASTER_CLOCK / 3;
// H counts from 128->511, HBLANK starts at 144 and ends at 240
-#define HTOTAL (384)
-#define HBEND (0) // (96+16)
-#define HBSTART (288) // (16)
+static constexpr unsigned HTOTAL = 384;
+static constexpr unsigned HBEND = 0; // (96+16)
+static constexpr unsigned HBSTART = 288; // (16)
-#define VTOTAL (264)
-#define VBEND (0) // (16)
-#define VBSTART (224) // (224+16)
+static constexpr unsigned VTOTAL = 264;
+static constexpr unsigned VBEND = 0; // (16)
+static constexpr unsigned VBSTART = 224; // (224+16)
/***************************************************************************/
-void mappy_state::int_on_w(int state)
+void mappy_state::main_int_on_w(int state)
{
m_main_irq_mask = state;
if (!state)
m_maincpu->set_input_line(0, CLEAR_LINE);
}
-void mappy_state::int_on_2_w(int state)
+void mappy_state::sub_int_on_w(int state)
{
m_sub_irq_mask = state;
if (!state)
m_subcpu->set_input_line(0, CLEAR_LINE);
}
-void mappy_state::int_on_3_w(int state)
+void phozon_state::sub2_int_on_w(int state)
{
m_sub2_irq_mask = state;
if (!state)
@@ -626,75 +626,76 @@ void mappy_state::vblank_irq(int state)
if (m_sub_irq_mask)
m_subcpu->set_input_line(0, ASSERT_LINE);
+}
+
+void phozon_state::phozon_vblank_irq(int state)
+{
+ if (!state)
+ return;
- if (m_subcpu2.found() && m_sub2_irq_mask)
+ vblank_irq(state);
+
+ if (m_sub2_irq_mask)
m_subcpu2->set_input_line(0, ASSERT_LINE);
}
-void mappy_state::superpac_cpu1_map(address_map &map)
+void mappy_state::superpac_main_map(address_map &map)
{
- map(0x0000, 0x07ff).ram().w(FUNC(mappy_state::superpac_videoram_w)).share("videoram");
- map(0x0800, 0x1fff).ram().share("spriteram"); // work RAM with embedded sprite RAM
- map(0x2000, 0x2000).rw(FUNC(mappy_state::superpac_flipscreen_r), FUNC(mappy_state::superpac_flipscreen_w));
+ map(0x0000, 0x07ff).ram().w(FUNC(mappy_state::superpac_videoram_w)).share(m_videoram);
+ map(0x0800, 0x1fff).ram().share(m_spriteram); // work RAM with embedded sprite RAM
+ map(0x2000, 0x2000).rw(FUNC(mappy_state::flipscreen_r), FUNC(mappy_state::flipscreen_w));
map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with the sound CPU
- map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface
- map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface
+ map(0x4800, 0x480f).rw(m_namcoio[0], FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface
+ map(0x4810, 0x481f).rw(m_namcoio[1], FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface
map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); // various control bits
map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
map(0xa000, 0xffff).rom();
}
-void mappy_state::phozon_cpu1_map(address_map &map)
+void phozon_state::main_map(address_map &map)
{
- map(0x0000, 0x07ff).ram().w(FUNC(mappy_state::superpac_videoram_w)).share("videoram"); // video RAM
- map(0x0800, 0x1fff).ram().share("spriteram"); // shared RAM with CPU #2/sprite RAM
+ map(0x0000, 0x07ff).ram().w(FUNC(phozon_state::superpac_videoram_w)).share(m_videoram); // video RAM
+ map(0x0800, 0x1fff).ram().share(m_spriteram); // shared RAM with CPU #2/sprite RAM
map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with the sound CPU
- map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface
- map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface
+ map(0x4800, 0x480f).rw(m_namcoio[0], FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface
+ map(0x4810, 0x481f).rw(m_namcoio[1], FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface
map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); // various control bits
map(0x7000, 0x7000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
map(0x8000, 0xffff).rom();
}
-void mappy_state::mappy_cpu1_map(address_map &map)
+void mappy_state::mappy_main_map(address_map &map)
{
- map(0x0000, 0x0fff).ram().w(FUNC(mappy_state::mappy_videoram_w)).share("videoram");
- map(0x1000, 0x27ff).ram().share("spriteram"); // work RAM with embedded sprite RAM
+ map(0x0000, 0x0fff).ram().w(FUNC(mappy_state::mappy_videoram_w)).share(m_videoram);
+ map(0x1000, 0x27ff).ram().share(m_spriteram); // work RAM with embedded sprite RAM
map(0x3800, 0x3fff).w(FUNC(mappy_state::mappy_scroll_w)); // scroll
map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with the sound CPU
- map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface
- map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface
+ map(0x4800, 0x480f).rw(m_namcoio[0], FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface
+ map(0x4810, 0x481f).rw(m_namcoio[1], FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface
map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); // various control bits
map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
map(0x8000, 0xffff).rom(); // only a000-ffff in Mappy
}
-void mappy_state::superpac_cpu2_map(address_map &map)
+void mappy_state::superpac_sub_map(address_map &map)
{
map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with the main CPU (also sound registers)
map(0x2000, 0x200f).w("mainlatch", FUNC(ls259_device::write_a0)); // various control bits
map(0xe000, 0xffff).rom();
}
-void mappy_state::phozon_cpu2_map(address_map &map)
+void phozon_state::sub_map(address_map &map)
{
map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with the main CPU + sound registers
map(0xe000, 0xffff).rom();
}
-void mappy_state::mappy_cpu2_map(address_map &map)
-{
- map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with the main CPU (also sound registers)
- map(0x2000, 0x200f).w("mainlatch", FUNC(ls259_device::write_a0)); // various control bits
- map(0xe000, 0xffff).rom();
-}
-
// extra CPU only present in Phozon
-void mappy_state::phozon_cpu3_map(address_map &map)
+void phozon_state::sub2_map(address_map &map)
{
- map(0x0000, 0x07ff).ram().w(FUNC(mappy_state::superpac_videoram_w)).share("videoram");
- map(0x0800, 0x1fff).ram().share("spriteram"); // shared RAM with CPU #2/sprite RAM
+ map(0x0000, 0x07ff).ram().w(FUNC(phozon_state::superpac_videoram_w)).share(m_videoram);
+ map(0x0800, 0x1fff).ram().share(m_spriteram); // shared RAM with CPU #2/sprite RAM
map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with CPU #2
map(0xa000, 0xa7ff).ram();
map(0xe000, 0xffff).rom();
@@ -1219,10 +1220,10 @@ static const gfx_layout charlayout =
8,8,
RGN_FRAC(1,1),
2,
- { 0, 4 },
- { 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 16*8
+ { STEP2(0, 4) },
+ { STEP4(8*8, 1), STEP4(0, 1) },
+ { STEP8(0, 8) },
+ 8*8*2
};
static const gfx_layout spritelayout_2bpp =
@@ -1230,12 +1231,10 @@ static const gfx_layout spritelayout_2bpp =
16,16,
RGN_FRAC(1,1),
2,
- { 0, 4 },
- { 0, 1, 2, 3, 8*8, 8*8+1, 8*8+2, 8*8+3,
- 16*8+0, 16*8+1, 16*8+2, 16*8+3, 24*8+0, 24*8+1, 24*8+2, 24*8+3 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
- 32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 },
- 64*8
+ { STEP2(0, 4) },
+ { STEP4(0, 1), STEP4(8*8, 1), STEP4(8*8*2, 1), STEP4(8*8*3, 1) },
+ { STEP8(0, 8), STEP8(8*8*4, 8) },
+ 16*16*2
};
static const gfx_layout spritelayout_8x8 =
@@ -1243,45 +1242,43 @@ static const gfx_layout spritelayout_8x8 =
8,8,
RGN_FRAC(1,1),
2,
- { 0, 4 },
- { 0, 1, 2, 3, 8*8, 8*8+1, 8*8+2, 8*8+3 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 16*8
+ { STEP2(0, 4) },
+ { STEP4(0, 1), STEP4(8*8, 1) },
+ { STEP8(0, 8) },
+ 8*8*2
};
static const gfx_layout spritelayout_4bpp =
{
16,16,
- RGN_FRAC(1,2),
+ RGN_FRAC(1,1),
4,
- { 0, 4, RGN_FRAC(1,2)+0, RGN_FRAC(1,2)+4 },
- { 0, 1, 2, 3, 8*8, 8*8+1, 8*8+2, 8*8+3, 16*8+0, 16*8+1, 16*8+2, 16*8+3,
- 24*8+0, 24*8+1, 24*8+2, 24*8+3 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
- 32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 },
- 64*8
+ { STEP4(0, 4) },
+ { STEP4(0, 1), STEP4(8*16, 1), STEP4(8*16*2, 1), STEP4(8*16*3, 1) },
+ { STEP8(0, 16), STEP8(8*16*4, 16) },
+ 16*16*4
};
static GFXDECODE_START( gfx_superpac )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout_2bpp, 64*4, 64 )
+ GFXDECODE_ENTRY( "tiles", 0, charlayout, 0, 64 )
+ GFXDECODE_ENTRY( "sprites", 0, spritelayout_2bpp, 64*4, 64 )
GFXDECODE_END
static GFXDECODE_START( gfx_phozon )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout_8x8, 64*4, 64 )
+ GFXDECODE_ENTRY( "tiles", 0, charlayout, 0, 64 )
+ GFXDECODE_ENTRY( "sprites", 0, spritelayout_8x8, 64*4, 64 )
GFXDECODE_END
static GFXDECODE_START( gfx_mappy )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout_4bpp, 64*4, 16 )
+ GFXDECODE_ENTRY( "tiles", 0, charlayout, 0, 64 )
+ GFXDECODE_ENTRY( "sprites", 0, spritelayout_4bpp, 64*4, 16 )
GFXDECODE_END
static GFXDECODE_START( gfx_todruaga )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout_4bpp, 64*4, 64 )
+ GFXDECODE_ENTRY( "tiles", 0, charlayout, 0, 64 )
+ GFXDECODE_ENTRY( "sprites", 0, spritelayout_4bpp, 64*4, 64 )
GFXDECODE_END
@@ -1295,8 +1292,8 @@ void mappy_state::out_lamps(uint8_t data)
{
m_leds[0] = BIT(data, 0);
m_leds[1] = BIT(data, 1);
- machine().bookkeeping().coin_lockout_global_w(data & 4);
- machine().bookkeeping().coin_counter_w(0, ~data & 8);
+ machine().bookkeeping().coin_lockout_global_w(BIT(data, 2));
+ machine().bookkeeping().coin_counter_w(0, BIT(~data, 3));
}
void mappy_state::machine_start()
@@ -1308,6 +1305,12 @@ void mappy_state::machine_start()
save_item(NAME(m_main_irq_mask));
save_item(NAME(m_sub_irq_mask));
+}
+
+void phozon_state::machine_start()
+{
+ mappy_state::machine_start();
+
save_item(NAME(m_sub2_irq_mask));
}
@@ -1316,14 +1319,14 @@ void mappy_state::superpac_common(machine_config &config)
{
// basic machine hardware
MC6809E(config, m_maincpu, PIXEL_CLOCK/4); // 1.536 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_cpu1_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_main_map);
MC6809E(config, m_subcpu, PIXEL_CLOCK/4); // 1.536 MHz
- m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_cpu2_map);
+ m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_sub_map);
ls259_device &mainlatch(LS259(config, "mainlatch")); // 2M on CPU board
- mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w));
- mainlatch.q_out_cb<1>().set(FUNC(mappy_state::int_on_w));
+ mainlatch.q_out_cb<0>().set(FUNC(mappy_state::sub_int_on_w));
+ mainlatch.q_out_cb<1>().set(FUNC(mappy_state::main_int_on_w));
mainlatch.q_out_cb<3>().set(m_namco_15xx, FUNC(namco_15xx_device::sound_enable_w));
mainlatch.q_out_cb<4>().set(m_namcoio[0], FUNC(namcoio_device::set_reset_line)).invert();
mainlatch.q_out_cb<4>().append(m_namcoio[1], FUNC(namcoio_device::set_reset_line)).invert();
@@ -1352,7 +1355,7 @@ void mappy_state::superpac_common(machine_config &config)
// sound hardware
SPEAKER(config, "speaker").front_center();
- NAMCO_15XX(config, m_namco_15xx, 18432000/768);
+ NAMCO_15XX(config, m_namco_15xx, MASTER_CLOCK/768);
m_namco_15xx->set_voices(8);
m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0);
}
@@ -1412,22 +1415,22 @@ void mappy_state::grobda(machine_config &config)
m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0);
}
-void mappy_state::phozon(machine_config &config)
+void phozon_state::phozon(machine_config &config)
{
// basic machine hardware
MC6809E(config, m_maincpu, PIXEL_CLOCK/4); // MAIN CPU
- m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu1_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &phozon_state::main_map);
MC6809E(config, m_subcpu, PIXEL_CLOCK/4); // SOUND CPU
- m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu2_map);
+ m_subcpu->set_addrmap(AS_PROGRAM, &phozon_state::sub_map);
MC6809E(config, m_subcpu2, PIXEL_CLOCK/4); // SUB CPU
- m_subcpu2->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu3_map);
+ m_subcpu2->set_addrmap(AS_PROGRAM, &phozon_state::sub2_map);
ls259_device &mainlatch(LS259(config, "mainlatch")); // 5C
- mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w));
- mainlatch.q_out_cb<1>().set(FUNC(mappy_state::int_on_w));
- mainlatch.q_out_cb<2>().set(FUNC(mappy_state::int_on_3_w));
+ mainlatch.q_out_cb<0>().set(FUNC(phozon_state::sub_int_on_w));
+ mainlatch.q_out_cb<1>().set(FUNC(phozon_state::main_int_on_w));
+ mainlatch.q_out_cb<2>().set(FUNC(phozon_state::sub2_int_on_w));
mainlatch.q_out_cb<3>().set(m_namco_15xx, FUNC(namco_15xx_device::sound_enable_w));
mainlatch.q_out_cb<4>().set(m_namcoio[0], FUNC(namcoio_device::set_reset_line)).invert();
mainlatch.q_out_cb<4>().append(m_namcoio[1], FUNC(namcoio_device::set_reset_line)).invert();
@@ -1457,20 +1460,18 @@ void mappy_state::phozon(machine_config &config)
// video hardware
GFXDECODE(config, m_gfxdecode, m_palette, gfx_phozon);
- PALETTE(config, m_palette, FUNC(mappy_state::phozon_palette), 64*4+64*4, 32);
+ PALETTE(config, m_palette, FUNC(phozon_state::palette), 64*4+64*4, 32);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(mappy_state::screen_update_phozon));
+ m_screen->set_screen_update(FUNC(phozon_state::screen_update));
m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(mappy_state::vblank_irq)); // cause IRQs on all three CPUs; also update the custom I/O chips
-
- MCFG_VIDEO_START_OVERRIDE(mappy_state,phozon)
+ m_screen->screen_vblank().set(FUNC(phozon_state::phozon_vblank_irq)); // cause IRQs on all three CPUs; also update the custom I/O chips
// sound hardware
SPEAKER(config, "speaker").front_center();
- NAMCO_15XX(config, m_namco_15xx, 18432000/768);
+ NAMCO_15XX(config, m_namco_15xx, MASTER_CLOCK/768);
m_namco_15xx->set_voices(8);
m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0);
}
@@ -1479,14 +1480,14 @@ void mappy_state::mappy_common(machine_config &config)
{
// basic machine hardware
MC6809E(config, m_maincpu, PIXEL_CLOCK/4); // 1.536 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::mappy_cpu1_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::mappy_main_map);
MC6809E(config, m_subcpu, PIXEL_CLOCK/4); // 1.536 MHz
- m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::mappy_cpu2_map);
+ m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_sub_map);
ls259_device &mainlatch(LS259(config, "mainlatch")); // 2M on CPU board
- mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w));
- mainlatch.q_out_cb<1>().set(FUNC(mappy_state::int_on_w));
+ mainlatch.q_out_cb<0>().set(FUNC(mappy_state::sub_int_on_w));
+ mainlatch.q_out_cb<1>().set(FUNC(mappy_state::main_int_on_w));
mainlatch.q_out_cb<2>().set(FUNC(mappy_state::flip_screen_set));
mainlatch.q_out_cb<3>().set(m_namco_15xx, FUNC(namco_15xx_device::sound_enable_w));
mainlatch.q_out_cb<4>().set(m_namcoio[0], FUNC(namcoio_device::set_reset_line)).invert();
@@ -1516,7 +1517,7 @@ void mappy_state::mappy_common(machine_config &config)
// sound hardware
SPEAKER(config, "speaker").front_center();
- NAMCO_15XX(config, m_namco_15xx, 18432000/768);
+ NAMCO_15XX(config, m_namco_15xx, MASTER_CLOCK/768);
m_namco_15xx->set_voices(8);
m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0);
}
@@ -1597,10 +1598,10 @@ ROM_START( superpac )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "spc-3.1k", 0xf000, 0x1000, CRC(04445ddb) SHA1(ce7d14963d5ddaefdeaf433a6f82c43cd1611d9b) )
- ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_REGION( 0x1000, "tiles", 0 )
ROM_LOAD( "sp1-6.3c", 0x0000, 0x1000, CRC(91c5935c) SHA1(10579edabc26a0910253fab7d41b4c19ecdaaa09) )
- ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_REGION( 0x2000, "sprites", 0 )
ROM_LOAD( "spv-2.3f", 0x0000, 0x2000, CRC(670a42f2) SHA1(9171922df07e31fd1dc415766f7d2cc50a9d10dc) )
ROM_REGION( 0x0220, "proms", 0 )
@@ -1620,10 +1621,10 @@ ROM_START( superpacm )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "spc-3.1k", 0xf000, 0x1000, CRC(04445ddb) SHA1(ce7d14963d5ddaefdeaf433a6f82c43cd1611d9b) )
- ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_REGION( 0x1000, "tiles", 0 )
ROM_LOAD( "spv-1.3c", 0x0000, 0x1000, CRC(78337e74) SHA1(11222adb55e6bce508896ccb1f6dbab0c1d44e5b) )
- ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_REGION( 0x2000, "sprites", 0 )
ROM_LOAD( "spv-2.3f", 0x0000, 0x2000, CRC(670a42f2) SHA1(9171922df07e31fd1dc415766f7d2cc50a9d10dc) )
ROM_REGION( 0x0220, "proms", 0 )
@@ -1644,10 +1645,10 @@ ROM_START( pacnpal )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "pap1-4.1k", 0xf000, 0x1000, CRC(330e20de) SHA1(5b23e5dcc38dc644a36efc8b03eba34cea540bea) )
- ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_REGION( 0x1000, "tiles", 0 )
ROM_LOAD( "pap1-6.3c", 0x0000, 0x1000, CRC(a36b96cb) SHA1(e0a11b5a43cbf756ddb045c743973d0a55dbb979) )
- ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_REGION( 0x2000, "sprites", 0 )
ROM_LOAD( "pap1-5.3f", 0x0000, 0x2000, CRC(fb6f56e3) SHA1(fd10d2ee49b4e059e9ef6046bc86d97e3185164d) )
ROM_REGION( 0x0220, "proms", 0 )
@@ -1668,10 +1669,10 @@ ROM_START( pacnpal2 )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "pap1-4.1k", 0xf000, 0x1000, CRC(330e20de) SHA1(5b23e5dcc38dc644a36efc8b03eba34cea540bea) )
- ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_REGION( 0x1000, "tiles", 0 )
ROM_LOAD( "pap1-6.3c", 0x0000, 0x1000, CRC(a36b96cb) SHA1(e0a11b5a43cbf756ddb045c743973d0a55dbb979) )
- ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_REGION( 0x2000, "sprites", 0 )
ROM_LOAD( "pap1-5.3f", 0x0000, 0x2000, CRC(fb6f56e3) SHA1(fd10d2ee49b4e059e9ef6046bc86d97e3185164d) )
ROM_REGION( 0x0220, "proms", 0 )
@@ -1693,10 +1694,10 @@ ROM_START( pacnchmp )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "pap1-4.1k", 0xf000, 0x1000, CRC(330e20de) SHA1(5b23e5dcc38dc644a36efc8b03eba34cea540bea) )
- ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_REGION( 0x1000, "tiles", 0 )
ROM_LOAD( "pap2-6.3c", 0x0000, 0x1000, CRC(93d15c30) SHA1(5da4120b680726c83a651b445254604cbf7cc883) )
- ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_REGION( 0x2000, "sprites", 0 )
ROM_LOAD( "pap2-5.3f", 0x0000, 0x2000, CRC(39f44aa4) SHA1(0696539cb2c7fcda2f6c295c7d65678dac18950b) )
ROM_REGION( 0x0220, "proms", 0 )
@@ -1717,10 +1718,10 @@ ROM_START( grobda )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "gr1-4.1k", 0xe000, 0x2000, CRC(3fe78c08) SHA1(dd49a96e613e0ced5b82eafcaf935e136e7db53a) )
- ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_REGION( 0x1000, "tiles", 0 )
ROM_LOAD( "gr1-7.3c", 0x0000, 0x1000, CRC(4ebfabfd) SHA1(fffce05f59e090c4281aca0c0494825027b764fb) ) // characters
- ROM_REGION( 0x4000, "gfx2", 0 )
+ ROM_REGION( 0x4000, "sprites", 0 )
ROM_LOAD( "gr1-5.3f", 0x0000, 0x2000, CRC(eed43487) SHA1(d2b39651f39bdfca3754f7bbd7a52e7bf843dabe) ) // sprites
ROM_LOAD( "gr1-6.3e", 0x2000, 0x2000, CRC(cebb7362) SHA1(6efd57f9fa0f93f70e60efc387b3a782fad2665c) ) // sprites
@@ -1742,10 +1743,10 @@ ROM_START( grobda2 )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "gr1-4.1k", 0xe000, 0x2000, CRC(3fe78c08) SHA1(dd49a96e613e0ced5b82eafcaf935e136e7db53a) )
- ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_REGION( 0x1000, "tiles", 0 )
ROM_LOAD( "gr1-7.3c", 0x0000, 0x1000, CRC(4ebfabfd) SHA1(fffce05f59e090c4281aca0c0494825027b764fb) ) // characters
- ROM_REGION( 0x4000, "gfx2", 0 )
+ ROM_REGION( 0x4000, "sprites", 0 )
ROM_LOAD( "gr1-5.3f", 0x0000, 0x2000, CRC(eed43487) SHA1(d2b39651f39bdfca3754f7bbd7a52e7bf843dabe) ) // sprites
ROM_LOAD( "gr1-6.3e", 0x2000, 0x2000, CRC(cebb7362) SHA1(6efd57f9fa0f93f70e60efc387b3a782fad2665c) ) // sprites
@@ -1767,10 +1768,10 @@ ROM_START( grobda3 )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "gr1-4.1k", 0xe000, 0x2000, CRC(3fe78c08) SHA1(dd49a96e613e0ced5b82eafcaf935e136e7db53a) )
- ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_REGION( 0x1000, "tiles", 0 )
ROM_LOAD( "gr1-7.3c", 0x0000, 0x1000, CRC(4ebfabfd) SHA1(fffce05f59e090c4281aca0c0494825027b764fb) ) // characters
- ROM_REGION( 0x4000, "gfx2", 0 )
+ ROM_REGION( 0x4000, "sprites", 0 )
ROM_LOAD( "gr1-5.3f", 0x0000, 0x2000, CRC(eed43487) SHA1(d2b39651f39bdfca3754f7bbd7a52e7bf843dabe) ) // sprites
ROM_LOAD( "gr1-6.3e", 0x2000, 0x2000, CRC(cebb7362) SHA1(6efd57f9fa0f93f70e60efc387b3a782fad2665c) ) // sprites
@@ -1796,11 +1797,11 @@ ROM_START( phozon )
ROM_REGION( 0x10000, "sub2", 0 ) // 64k for the SUB CPU
ROM_LOAD( "9r.rom", 0xe000, 0x2000, CRC(5d9f0a28) SHA1(2caef680229180b237f8c4becf052f1a96592efd) )
- ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_REGION( 0x2000, "tiles", 0 )
ROM_LOAD( "7j.rom", 0x0000, 0x1000, CRC(27f9db5b) SHA1(12ef817136b45927d7f279952fa19049a1349f60) ) // characters (set 1)
ROM_LOAD( "8j.rom", 0x1000, 0x1000, CRC(15b12ef8) SHA1(e3303656b4e8b988e55a9551e5344e289958f677) ) // characters (set 2)
- ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_REGION( 0x2000, "sprites", 0 )
ROM_LOAD( "5t.rom", 0x0000, 0x2000, CRC(d50f08f8) SHA1(4e9dda0d5ad1c1b8b3be7edb05b3060f5f63a9c7) ) // sprites
ROM_REGION( 0x0520, "proms", 0 )
@@ -1828,11 +1829,11 @@ ROM_START( phozons )
ROM_REGION( 0x10000, "sub2", 0 ) // 64k for the SUB CPU
ROM_LOAD( "9r.rom", 0xe000, 0x2000, CRC(5d9f0a28) SHA1(2caef680229180b237f8c4becf052f1a96592efd) ) // 9r.bin
- ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_REGION( 0x2000, "tiles", 0 )
ROM_LOAD( "7j.bin", 0x0000, 0x1000, CRC(312b3ece) SHA1(1d4d3371a42321644ec3669f95abcfe860020868) ) // characters (set 1)
ROM_LOAD( "8j.bin", 0x1000, 0x1000, CRC(d21422a2) SHA1(0268651628d66dc67a3b6bb8fb682b668e7ebbad) ) // characters (set 2)
- ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_REGION( 0x2000, "sprites", 0 )
ROM_LOAD( "5t.rom", 0x0000, 0x2000, CRC(d50f08f8) SHA1(4e9dda0d5ad1c1b8b3be7edb05b3060f5f63a9c7) ) // sprites - 5t.bin
ROM_REGION( 0x0500, "proms", 0 )
@@ -1860,12 +1861,12 @@ ROM_START( mappy )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "mp1_4.1k", 0xe000, 0x2000, CRC(8182dd5b) SHA1(f36b57f7f1e79f00b3f07afe1960bca5f5325ee2) )
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
+ ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT )
ROM_LOAD( "mp1_5.3b", 0x0000, 0x1000, CRC(16498b9f) SHA1(76610149c65f955484fef1c033ddc3fed3f4e568) )
- ROM_REGION( 0x4000, "gfx2", 0 )
- ROM_LOAD( "mp1_6.3m", 0x0000, 0x2000, CRC(f2d9647a) SHA1(3cc216793c6a5f73c437ad2524563deb3b5e2890) )
- ROM_LOAD( "mp1_7.3n", 0x2000, 0x2000, CRC(757cf2b6) SHA1(8dfbf03953d5219d9eb5fc654ec3392442ba1dc4) )
+ ROM_REGION( 0x4000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "mp1_6.3m", 0x0000, 0x2000, CRC(f2d9647a) SHA1(3cc216793c6a5f73c437ad2524563deb3b5e2890) )
+ ROM_LOAD16_BYTE( "mp1_7.3n", 0x0001, 0x2000, CRC(757cf2b6) SHA1(8dfbf03953d5219d9eb5fc654ec3392442ba1dc4) )
ROM_REGION( 0x0220, "proms", 0 )
ROM_LOAD( "mp1-5.5b", 0x0000, 0x0020, CRC(56531268) SHA1(2e356706c07f43eeb67783fb122bdc7fed1b3589) ) // palette
@@ -1885,12 +1886,12 @@ ROM_START( mappyj )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "mp1_4.1k", 0xe000, 0x2000, CRC(8182dd5b) SHA1(f36b57f7f1e79f00b3f07afe1960bca5f5325ee2) )
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
+ ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT )
ROM_LOAD( "mp1_5.3b", 0x0000, 0x1000, CRC(16498b9f) SHA1(76610149c65f955484fef1c033ddc3fed3f4e568) )
- ROM_REGION( 0x4000, "gfx2", 0 )
- ROM_LOAD( "mp1_6.3m", 0x0000, 0x2000, CRC(f2d9647a) SHA1(3cc216793c6a5f73c437ad2524563deb3b5e2890) )
- ROM_LOAD( "mp1_7.3n", 0x2000, 0x2000, CRC(757cf2b6) SHA1(8dfbf03953d5219d9eb5fc654ec3392442ba1dc4) )
+ ROM_REGION( 0x4000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "mp1_6.3m", 0x0000, 0x2000, CRC(f2d9647a) SHA1(3cc216793c6a5f73c437ad2524563deb3b5e2890) )
+ ROM_LOAD16_BYTE( "mp1_7.3n", 0x0001, 0x2000, CRC(757cf2b6) SHA1(8dfbf03953d5219d9eb5fc654ec3392442ba1dc4) )
ROM_REGION( 0x0220, "proms", 0 )
ROM_LOAD( "mp1-5.5b", 0x0000, 0x0020, CRC(56531268) SHA1(2e356706c07f43eeb67783fb122bdc7fed1b3589) ) // palette
@@ -1909,12 +1910,12 @@ ROM_START( todruaga )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "td1_4.1k", 0xe000, 0x2000, CRC(ae9d06d9) SHA1(3d8621fdd74fafa61f342886faa37f0aab50c5a7) )
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
+ ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT )
ROM_LOAD( "td1_5.3b", 0x0000, 0x1000, CRC(d32b249f) SHA1(7d7cee4101ef615fb92c3702f89a9823a6231195) )
- ROM_REGION( 0x4000, "gfx2", 0 )
- ROM_LOAD( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) )
- ROM_LOAD( "td1_7.3n", 0x2000, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) )
+ ROM_REGION( 0x4000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) )
+ ROM_LOAD16_BYTE( "td1_7.3n", 0x0001, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) )
ROM_REGION( 0x0520, "proms", 0 )
ROM_LOAD( "td1-5.5b", 0x0000, 0x0020, CRC(122cc395) SHA1(a648c53f2e95634bb5b27d79be3fd908021d056e) ) // palette
@@ -1933,12 +1934,12 @@ ROM_START( todruagao )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "td1_4.1k", 0xe000, 0x2000, CRC(ae9d06d9) SHA1(3d8621fdd74fafa61f342886faa37f0aab50c5a7) )
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
+ ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT )
ROM_LOAD( "td1_5.3b", 0x0000, 0x1000, CRC(d32b249f) SHA1(7d7cee4101ef615fb92c3702f89a9823a6231195) )
- ROM_REGION( 0x4000, "gfx2", 0 )
- ROM_LOAD( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) )
- ROM_LOAD( "td1_7.3n", 0x2000, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) )
+ ROM_REGION( 0x4000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) )
+ ROM_LOAD16_BYTE( "td1_7.3n", 0x0001, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) )
ROM_REGION( 0x0520, "proms", 0 )
ROM_LOAD( "td1-5.5b", 0x0000, 0x0020, CRC(122cc395) SHA1(a648c53f2e95634bb5b27d79be3fd908021d056e) ) // palette
@@ -1957,12 +1958,12 @@ ROM_START( todruagas )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "td1_4.1k", 0xe000, 0x2000, CRC(ae9d06d9) SHA1(3d8621fdd74fafa61f342886faa37f0aab50c5a7) )
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
+ ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT )
ROM_LOAD( "td1_5.3b", 0x0000, 0x1000, CRC(d32b249f) SHA1(7d7cee4101ef615fb92c3702f89a9823a6231195) )
- ROM_REGION( 0x4000, "gfx2", 0 )
- ROM_LOAD( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) )
- ROM_LOAD( "td1_7.3n", 0x2000, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) )
+ ROM_REGION( 0x4000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) )
+ ROM_LOAD16_BYTE( "td1_7.3n", 0x0001, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) )
ROM_REGION( 0x0520, "proms", 0 )
ROM_LOAD( "td1-5.5b", 0x0000, 0x0020, CRC(122cc395) SHA1(a648c53f2e95634bb5b27d79be3fd908021d056e) ) // palette
@@ -1981,12 +1982,12 @@ ROM_START( digdug2 )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "d21_4.1k", 0xe000, 0x2000, CRC(737443b1) SHA1(0e46204089cc6e5ffab0d2a62f9a1728f8c35948) )
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
+ ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT )
ROM_LOAD( "d21_5.3b", 0x0000, 0x1000, CRC(afcb4509) SHA1(c9a54df22b0b92efbe7417a00200587225906b46) )
- ROM_REGION( 0x8000, "gfx2", 0 )
- ROM_LOAD( "d21_6.3m", 0x0000, 0x4000, CRC(df1f4ad8) SHA1(004fba630018dbf03c4b0e284c98077e19fface3) )
- ROM_LOAD( "d21_7.3n", 0x4000, 0x4000, CRC(ccadb3ea) SHA1(77d8d8e6039272f73e63c8f76084138ec613365a) )
+ ROM_REGION( 0x8000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "d21_6.3m", 0x0000, 0x4000, CRC(df1f4ad8) SHA1(004fba630018dbf03c4b0e284c98077e19fface3) )
+ ROM_LOAD16_BYTE( "d21_7.3n", 0x0001, 0x4000, CRC(ccadb3ea) SHA1(77d8d8e6039272f73e63c8f76084138ec613365a) )
ROM_REGION( 0x0220, "proms", 0 )
ROM_LOAD( "d21-5.5b", 0x0000, 0x0020, CRC(9b169db5) SHA1(77e840d10ab59708a051c3b15305b33d431ee06d) ) // palette
@@ -2005,12 +2006,12 @@ ROM_START( digdug2o )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "d21_4.1k", 0xe000, 0x2000, CRC(737443b1) SHA1(0e46204089cc6e5ffab0d2a62f9a1728f8c35948) )
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
+ ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT )
ROM_LOAD( "d21_5.3b", 0x0000, 0x1000, CRC(afcb4509) SHA1(c9a54df22b0b92efbe7417a00200587225906b46) )
- ROM_REGION( 0x8000, "gfx2", 0 )
- ROM_LOAD( "d21_6.3m", 0x0000, 0x4000, CRC(df1f4ad8) SHA1(004fba630018dbf03c4b0e284c98077e19fface3) )
- ROM_LOAD( "d21_7.3n", 0x4000, 0x4000, CRC(ccadb3ea) SHA1(77d8d8e6039272f73e63c8f76084138ec613365a) )
+ ROM_REGION( 0x8000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "d21_6.3m", 0x0000, 0x4000, CRC(df1f4ad8) SHA1(004fba630018dbf03c4b0e284c98077e19fface3) )
+ ROM_LOAD16_BYTE( "d21_7.3n", 0x0001, 0x4000, CRC(ccadb3ea) SHA1(77d8d8e6039272f73e63c8f76084138ec613365a) )
ROM_REGION( 0x0220, "proms", 0 )
ROM_LOAD( "d21-5.5b", 0x0000, 0x0020, CRC(9b169db5) SHA1(77e840d10ab59708a051c3b15305b33d431ee06d) ) // palette
@@ -2030,12 +2031,12 @@ ROM_START( motos )
ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU
ROM_LOAD( "mo1_4.1k", 0xe000, 0x2000, CRC(55e45d21) SHA1(a8b195acfec542734751de29c9dafc2b165a5881) )
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
+ ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT )
ROM_LOAD( "mo1_5.3b", 0x0000, 0x1000, CRC(5d4a2a22) SHA1(4af9bf2ae9bb78d2d029ef38809181ffa3c0eb66) )
- ROM_REGION( 0x8000, "gfx2", 0 )
- ROM_LOAD( "mo1_6.3m", 0x0000, 0x4000, CRC(2f0e396e) SHA1(664679f9d3d74a3fccb086af910392b4fe40c9bc) )
- ROM_LOAD( "mo1_7.3n", 0x4000, 0x4000, CRC(cf8a3b86) SHA1(2b49cdec516e23783f2a291633d81ab8bd0245fc) )
+ ROM_REGION( 0x8000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "mo1_6.3m", 0x0000, 0x4000, CRC(2f0e396e) SHA1(664679f9d3d74a3fccb086af910392b4fe40c9bc) )
+ ROM_LOAD16_BYTE( "mo1_7.3n", 0x0001, 0x4000, CRC(cf8a3b86) SHA1(2b49cdec516e23783f2a291633d81ab8bd0245fc) )
ROM_REGION( 0x0220, "proms", 0 )
ROM_LOAD( "mo1-5.5b", 0x0000, 0x0020, CRC(71972383) SHA1(66b0619affcc5168b099108800a941d6e2416ab0) ) // palette
@@ -2055,25 +2056,25 @@ void mappy_state::init_digdug2()
// 2x6809, static tilemap, 2bpp sprites (Super Pacman type)
-GAME( 1982, superpac, 0, superpac, superpac, mappy_state, empty_init, ROT90, "Namco", "Super Pac-Man", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, superpacm, superpac, superpac, superpac, mappy_state, empty_init, ROT90, "Namco (Bally Midway license)", "Super Pac-Man (Midway)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, pacnpal, 0, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac & Pal", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, pacnpal2, pacnpal, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac & Pal (older)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, pacnchmp, pacnpal, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac-Man & Chomp Chomp", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, grobda, 0, grobda, grobda, mappy_state, empty_init, ROT90, "Namco", "Grobda (New Ver.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, grobda2, grobda, grobda, grobda, mappy_state, empty_init, ROT90, "Namco", "Grobda (Old Ver. set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, grobda3, grobda, grobda, grobda, mappy_state, empty_init, ROT90, "Namco", "Grobda (Old Ver. set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, superpac, 0, superpac, superpac, mappy_state, empty_init, ROT90, "Namco", "Super Pac-Man", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, superpacm, superpac, superpac, superpac, mappy_state, empty_init, ROT90, "Namco (Bally Midway license)", "Super Pac-Man (Midway)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, pacnpal, 0, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac & Pal", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, pacnpal2, pacnpal, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac & Pal (older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, pacnchmp, pacnpal, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac-Man & Chomp Chomp", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, grobda, 0, grobda, grobda, mappy_state, empty_init, ROT90, "Namco", "Grobda (New Ver.)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, grobda2, grobda, grobda, grobda, mappy_state, empty_init, ROT90, "Namco", "Grobda (Old Ver. set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, grobda3, grobda, grobda, grobda, mappy_state, empty_init, ROT90, "Namco", "Grobda (Old Ver. set 2)", MACHINE_SUPPORTS_SAVE )
// 3x6809, static tilemap, 2bpp sprites (Gaplus type)
-GAME( 1983, phozon, 0, phozon, phozon, mappy_state, empty_init, ROT90, "Namco", "Phozon (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, phozons, phozon, phozon, phozon, mappy_state, empty_init, ROT90, "Namco (Sidam license)", "Phozon (Sidam)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, phozon, 0, phozon, phozon, phozon_state, empty_init, ROT90, "Namco", "Phozon (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, phozons, phozon, phozon, phozon, phozon_state, empty_init, ROT90, "Namco (Sidam license)", "Phozon (Sidam)", MACHINE_SUPPORTS_SAVE )
// 2x6809, scroling tilemap, 4bpp sprites (Super Pacman type)
-GAME( 1983, mappy, 0, mappy, mappy, mappy_state, empty_init, ROT90, "Namco", "Mappy (US)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, mappyj, mappy, mappy, mappy, mappy_state, empty_init, ROT90, "Namco", "Mappy (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, todruaga, 0, todruaga, todruaga, mappy_state, empty_init, ROT90, "Namco", "The Tower of Druaga (New Ver.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, todruagao, todruaga, todruaga, todruaga, mappy_state, empty_init, ROT90, "Namco", "The Tower of Druaga (Old Ver.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, todruagas, todruaga, todruaga, todruaga, mappy_state, empty_init, ROT90, "bootleg? (Sidam)", "The Tower of Druaga (Sidam)", MACHINE_SUPPORTS_SAVE )
-GAME( 1985, digdug2, 0, digdug2, digdug2, mappy_state, init_digdug2, ROT90, "Namco", "Dig Dug II (New Ver.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1985, digdug2o, digdug2, digdug2, digdug2, mappy_state, init_digdug2, ROT90, "Namco", "Dig Dug II (Old Ver.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1985, motos, 0, motos, motos, mappy_state, empty_init, ROT90, "Namco", "Motos", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, mappy, 0, mappy, mappy, mappy_state, empty_init, ROT90, "Namco", "Mappy (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, mappyj, mappy, mappy, mappy, mappy_state, empty_init, ROT90, "Namco", "Mappy (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, todruaga, 0, todruaga, todruaga, mappy_state, empty_init, ROT90, "Namco", "The Tower of Druaga (New Ver.)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, todruagao, todruaga, todruaga, todruaga, mappy_state, empty_init, ROT90, "Namco", "The Tower of Druaga (Old Ver.)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, todruagas, todruaga, todruaga, todruaga, mappy_state, empty_init, ROT90, "bootleg? (Sidam)", "The Tower of Druaga (Sidam)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, digdug2, 0, digdug2, digdug2, mappy_state, init_digdug2, ROT90, "Namco", "Dig Dug II (New Ver.)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, digdug2o, digdug2, digdug2, digdug2, mappy_state, init_digdug2, ROT90, "Namco", "Dig Dug II (Old Ver.)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, motos, 0, motos, motos, mappy_state, empty_init, ROT90, "Namco", "Motos", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/namco/mappy.h b/src/mame/namco/mappy.h
index 4f14d1b640de5..732c922d1fc17 100644
--- a/src/mame/namco/mappy.h
+++ b/src/mame/namco/mappy.h
@@ -20,7 +20,6 @@ class mappy_state : public driver_device
m_spriteram(*this, "spriteram"),
m_maincpu(*this, "maincpu"),
m_subcpu(*this, "sub"),
- m_subcpu2(*this, "sub2"),
m_namcoio(*this, "namcoio_%u", 1),
m_namco_15xx(*this, "namco"),
m_gfxdecode(*this, "gfxdecode"),
@@ -31,7 +30,6 @@ class mappy_state : public driver_device
void mappy_common(machine_config &config);
void mappy(machine_config &config);
- void phozon(machine_config &config);
void motos(machine_config &config);
void grobda(machine_config &config);
void digdug2(machine_config &config);
@@ -45,13 +43,11 @@ class mappy_state : public driver_device
protected:
virtual void machine_start() override ATTR_COLD;
-private:
required_shared_ptr m_videoram;
required_shared_ptr m_spriteram;
required_device m_maincpu;
required_device m_subcpu;
- optional_device m_subcpu2;
required_device_array m_namcoio;
required_device m_namco_15xx;
required_device m_gfxdecode;
@@ -66,46 +62,68 @@ class mappy_state : public driver_device
uint8_t m_main_irq_mask = 0;
uint8_t m_sub_irq_mask = 0;
- uint8_t m_sub2_irq_mask = 0;
emu_timer *m_namcoio_run_timer[2]{};
- void int_on_w(int state);
- void int_on_2_w(int state);
- void int_on_3_w(int state);
+ void main_int_on_w(int state);
+ void sub_int_on_w(int state);
void superpac_videoram_w(offs_t offset, uint8_t data);
void mappy_videoram_w(offs_t offset, uint8_t data);
- void superpac_flipscreen_w(uint8_t data);
- uint8_t superpac_flipscreen_r();
+ void flipscreen_w(uint8_t data);
+ uint8_t flipscreen_r();
void mappy_scroll_w(offs_t offset, uint8_t data);
void out_lamps(uint8_t data);
TILEMAP_MAPPER_MEMBER(superpac_tilemap_scan);
TILEMAP_MAPPER_MEMBER(mappy_tilemap_scan);
TILE_GET_INFO_MEMBER(superpac_get_tile_info);
- TILE_GET_INFO_MEMBER(phozon_get_tile_info);
TILE_GET_INFO_MEMBER(mappy_get_tile_info);
template TIMER_CALLBACK_MEMBER(namcoio_run_timer);
DECLARE_VIDEO_START(superpac);
void superpac_palette(palette_device &palette) const;
- DECLARE_VIDEO_START(phozon);
- void phozon_palette(palette_device &palette) const;
DECLARE_VIDEO_START(mappy);
void mappy_palette(palette_device &palette) const;
uint32_t screen_update_superpac(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- uint32_t screen_update_phozon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_mappy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void vblank_irq(int state);
void mappy_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base);
- void phozon_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base);
-
- void mappy_cpu1_map(address_map &map) ATTR_COLD;
- void mappy_cpu2_map(address_map &map) ATTR_COLD;
- void phozon_cpu1_map(address_map &map) ATTR_COLD;
- void phozon_cpu2_map(address_map &map) ATTR_COLD;
- void phozon_cpu3_map(address_map &map) ATTR_COLD;
- void superpac_cpu1_map(address_map &map) ATTR_COLD;
- void superpac_cpu2_map(address_map &map) ATTR_COLD;
+
+ void mappy_main_map(address_map &map) ATTR_COLD;
+ void superpac_main_map(address_map &map) ATTR_COLD;
+ void superpac_sub_map(address_map &map) ATTR_COLD;
+};
+
+class phozon_state : public mappy_state
+{
+public:
+ phozon_state(const machine_config &mconfig, device_type type, const char *tag) :
+ mappy_state(mconfig, type, tag),
+ m_subcpu2(*this, "sub2")
+ { }
+
+ void phozon(machine_config &config);
+
+protected:
+ virtual void machine_start() override ATTR_COLD;
+ virtual void video_start() override ATTR_COLD;
+
+private:
+ required_device m_subcpu2;
+
+ uint8_t m_sub2_irq_mask = 0;
+
+ void sub2_int_on_w(int state);
+
+ TILE_GET_INFO_MEMBER(get_tile_info);
+
+ void palette(palette_device &palette) const;
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void phozon_vblank_irq(int state);
+ void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base);
+
+ void main_map(address_map &map) ATTR_COLD;
+ void sub_map(address_map &map) ATTR_COLD;
+ void sub2_map(address_map &map) ATTR_COLD;
};
#endif // MAME_NAMCO_MAPPY_H
diff --git a/src/mame/namco/mappy_v.cpp b/src/mame/namco/mappy_v.cpp
index b66f5bcb737c4..ff4864a4c9119 100644
--- a/src/mame/namco/mappy_v.cpp
+++ b/src/mame/namco/mappy_v.cpp
@@ -154,7 +154,7 @@ void mappy_state::mappy_palette(palette_device &palette) const
***************************************************************************/
-void mappy_state::phozon_palette(palette_device &palette) const
+void phozon_state::palette(palette_device &palette) const
{
const uint8_t *color_prom = memregion("proms")->base();
static constexpr int resistances[4] = { 2200, 1000, 470, 220 };
@@ -254,7 +254,7 @@ TILE_GET_INFO_MEMBER(mappy_state::superpac_get_tile_info)
{
uint8_t attr = m_videoram[tile_index + 0x400];
- tileinfo.category = (attr & 0x40) >> 6;
+ tileinfo.category = BIT(attr, 6);
tileinfo.group = attr & 0x3f;
tileinfo.set(0,
m_videoram[tile_index],
@@ -262,11 +262,11 @@ TILE_GET_INFO_MEMBER(mappy_state::superpac_get_tile_info)
0);
}
-TILE_GET_INFO_MEMBER(mappy_state::phozon_get_tile_info)
+TILE_GET_INFO_MEMBER(phozon_state::get_tile_info)
{
uint8_t attr = m_videoram[tile_index + 0x400];
- tileinfo.category = (attr & 0x40) >> 6;
+ tileinfo.category = BIT(attr, 6);
tileinfo.group = attr & 0x3f;
tileinfo.set(0,
m_videoram[tile_index] + ((attr & 0x80) << 1),
@@ -278,7 +278,7 @@ TILE_GET_INFO_MEMBER(mappy_state::mappy_get_tile_info)
{
uint8_t attr = m_videoram[tile_index + 0x800];
- tileinfo.category = (attr & 0x40) >> 6;
+ tileinfo.category = BIT(attr, 6);
tileinfo.group = attr & 0x3f;
tileinfo.set(0,
m_videoram[tile_index],
@@ -302,9 +302,9 @@ VIDEO_START_MEMBER(mappy_state,superpac)
m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 31);
}
-VIDEO_START_MEMBER(mappy_state,phozon)
+void phozon_state::video_start()
{
- m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mappy_state::phozon_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(mappy_state::superpac_tilemap_scan)), 8, 8, 36, 28);
+ m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(phozon_state::get_tile_info)), tilemap_mapper_delegate(*this, FUNC(phozon_state::superpac_tilemap_scan)), 8, 8, 36, 28);
m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 15);
}
@@ -339,14 +339,15 @@ void mappy_state::mappy_videoram_w(offs_t offset, uint8_t data)
m_bg_tilemap->mark_tile_dirty(offset & 0x7ff);
}
-void mappy_state::superpac_flipscreen_w(uint8_t data)
+void mappy_state::flipscreen_w(uint8_t data)
{
- flip_screen_set(data & 1);
+ flip_screen_set(BIT(data, 0));
}
-uint8_t mappy_state::superpac_flipscreen_r()
+uint8_t mappy_state::flipscreen_r()
{
- flip_screen_set(1);
+ if (!machine().side_effects_disabled())
+ flip_screen_set(1);
return 0xff;
}
@@ -365,15 +366,14 @@ void mappy_state::mappy_scroll_w(offs_t offset, uint8_t data)
void mappy_state::mappy_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base)
{
- uint8_t *spriteram = spriteram_base + 0x780;
- uint8_t *spriteram_2 = spriteram + 0x800;
- uint8_t *spriteram_3 = spriteram_2 + 0x800;
- int offs;
+ uint8_t const *const spriteram = spriteram_base + 0x780;
+ uint8_t const *const spriteram_2 = spriteram + 0x800;
+ uint8_t const *const spriteram_3 = spriteram_2 + 0x800;
- for (offs = 0;offs < 0x80;offs += 2)
+ for (int offs = 0; offs < 0x80; offs += 2)
{
/* is it on? */
- if ((spriteram_3[offs+1] & 2) == 0)
+ if (BIT(~spriteram_3[offs+1], 1))
{
static const uint8_t gfx_offs[2][2] =
{
@@ -381,14 +381,13 @@ void mappy_state::mappy_draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip
{ 2, 3 }
};
int sprite = spriteram[offs];
- int color = spriteram[offs+1];
- int sx = spriteram_2[offs+1] + 0x100 * (spriteram_3[offs+1] & 1) - 40;
+ int const color = spriteram[offs+1];
+ int const sx = spriteram_2[offs+1] + 0x100 * (spriteram_3[offs+1] & 1) - 40;
int sy = 256 - spriteram_2[offs] + 1; // sprites are buffered and delayed by one scanline
- int flipx = (spriteram_3[offs] & 0x01);
- int flipy = (spriteram_3[offs] & 0x02) >> 1;
- int sizex = (spriteram_3[offs] & 0x04) >> 2;
- int sizey = (spriteram_3[offs] & 0x08) >> 3;
- int x,y;
+ int flipx = BIT(spriteram_3[offs], 0);
+ int flipy = BIT(spriteram_3[offs], 1);
+ int const sizex = (spriteram_3[offs] & 0x04) >> 2;
+ int const sizey = (spriteram_3[offs] & 0x08) >> 3;
sprite &= ~sizex;
sprite &= ~(sizey << 1);
@@ -402,9 +401,9 @@ void mappy_state::mappy_draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip
flipy ^= 1;
}
- for (y = 0;y <= sizey;y++)
+ for (int y = 0; y <= sizey; y++)
{
- for (x = 0;x <= sizex;x++)
+ for (int x = 0; x <= sizex; x++)
{
m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
sprite + gfx_offs[y ^ (sizey * flipy)][x ^ (sizex * flipx)],
@@ -440,17 +439,16 @@ spriteram_3
1 -------x X position MSB
*/
-void mappy_state::phozon_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base)
+void phozon_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base)
{
- uint8_t *spriteram = spriteram_base + 0x780;
- uint8_t *spriteram_2 = spriteram + 0x800;
- uint8_t *spriteram_3 = spriteram_2 + 0x800;
- int offs;
+ uint8_t const *const spriteram = spriteram_base + 0x780;
+ uint8_t const *const spriteram_2 = spriteram + 0x800;
+ uint8_t const *const spriteram_3 = spriteram_2 + 0x800;
- for (offs = 0;offs < 0x80;offs += 2)
+ for (int offs = 0; offs < 0x80; offs += 2)
{
/* is it on? */
- if ((spriteram_3[offs+1] & 2) == 0)
+ if (BIT(~spriteram_3[offs+1], 1))
{
static const uint8_t size[4] = { 1, 0, 3, 0 }; /* 16, 8, 32 pixels; fourth combination unused? */
static const uint8_t gfx_offs[4][4] =
@@ -460,15 +458,14 @@ void mappy_state::phozon_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cli
{ 8, 9,12,13 },
{10,11,14,15 }
};
- int sprite = (spriteram[offs] << 2) | ((spriteram_3[offs] & 0xc0) >> 6);
- int color = spriteram[offs+1] & 0x3f;
- int sx = spriteram_2[offs+1] + 0x100 * (spriteram_3[offs+1] & 1) - 69;
+ int const sprite = (spriteram[offs] << 2) | ((spriteram_3[offs] & 0xc0) >> 6);
+ int const color = spriteram[offs+1] & 0x3f;
+ int const sx = spriteram_2[offs+1] + 0x100 * (spriteram_3[offs+1] & 1) - 69;
int sy = 256 - spriteram_2[offs];
int flipx = (spriteram_3[offs] & 0x01);
int flipy = (spriteram_3[offs] & 0x02) >> 1;
- int sizex = size[(spriteram_3[offs] & 0x0c) >> 2];
- int sizey = size[(spriteram_3[offs] & 0x30) >> 4];
- int x,y;
+ int const sizex = size[(spriteram_3[offs] & 0x0c) >> 2];
+ int const sizey = size[(spriteram_3[offs] & 0x30) >> 4];
sy -= 8 * sizey;
sy = (sy & 0xff) - 32; // fix wraparound
@@ -479,9 +476,9 @@ void mappy_state::phozon_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cli
flipy ^= 1;
}
- for (y = 0;y <= sizey;y++)
+ for (int y = 0; y <= sizey; y++)
{
- for (x = 0;x <= sizex;x++)
+ for (int x = 0; x <= sizex; x++)
{
m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
sprite + gfx_offs[y ^ (sizey * flipy)][x ^ (sizex * flipx)],
@@ -510,12 +507,12 @@ uint32_t mappy_state::screen_update_superpac(screen_device &screen, bitmap_ind16
m_bg_tilemap->draw(screen, bitmap, cliprect, 1,0);
/* sprite color 0/1 still has priority over that (ghost eyes in Pac 'n Pal) */
- for (int y = 0;y < sprite_bitmap.height();y++)
+ for (int y = 0; y < sprite_bitmap.height(); y++)
{
- for (int x = 0;x < sprite_bitmap.width();x++)
+ for (int x = 0; x < sprite_bitmap.width(); x++)
{
- int spr_entry = sprite_bitmap.pix(y, x);
- int spr_pen = m_palette->pen_indirect(spr_entry);
+ uint16_t const spr_entry = sprite_bitmap.pix(y, x);
+ int const spr_pen = m_palette->pen_indirect(spr_entry);
if (spr_pen == 0 || spr_pen == 1)
bitmap.pix(y, x) = spr_entry;
}
@@ -523,14 +520,14 @@ uint32_t mappy_state::screen_update_superpac(screen_device &screen, bitmap_ind16
return 0;
}
-uint32_t mappy_state::screen_update_phozon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t phozon_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* flip screen control is embedded in RAM */
- flip_screen_set(m_spriteram[0x1f7f-0x800] & 1);
+ flip_screen_set(BIT(m_spriteram[0x1f7f-0x800], 0));
m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES,0);
- phozon_draw_sprites(bitmap,cliprect,m_spriteram);
+ draw_sprites(bitmap,cliprect,m_spriteram);
/* Redraw the high priority characters */
m_bg_tilemap->draw(screen, bitmap, cliprect, 1,0);
@@ -539,9 +536,7 @@ uint32_t mappy_state::screen_update_phozon(screen_device &screen, bitmap_ind16 &
uint32_t mappy_state::screen_update_mappy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- int offs;
-
- for (offs = 2;offs < 34;offs++)
+ for (int offs = 2; offs < 34; offs++)
m_bg_tilemap->set_scrolly(offs,m_scroll);
m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES,0);
diff --git a/src/mame/namco/toypop.cpp b/src/mame/namco/toypop.cpp
index de7107d4cf8e5..8586ac43fb351 100644
--- a/src/mame/namco/toypop.cpp
+++ b/src/mame/namco/toypop.cpp
@@ -36,41 +36,46 @@
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+#include "tilemap.h"
namespace {
-#define MASTER_CLOCK XTAL(6'144'000)
-
class namcos16_state : public driver_device
{
public:
namcos16_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
- m_master_cpu(*this,"maincpu"),
- m_slave_cpu(*this, "slave"),
- m_sound_cpu(*this, "audiocpu"),
+ m_maincpu(*this,"maincpu"),
+ m_subcpu(*this, "sub"),
+ m_soundcpu(*this, "soundcpu"),
m_namco15xx(*this, "namco"),
m_namco58xx(*this, "58xx"),
m_namco56xx_1(*this, "56xx_1"),
m_namco56xx_2(*this, "56xx_2"),
m_palette(*this, "palette"),
m_gfxdecode(*this, "gfxdecode"),
- m_master_workram(*this, "master_workram"),
- m_slave_sharedram(*this, "slave_sharedram"),
+ m_spriteram(*this, "spriteram"),
+ m_sharedram(*this, "sharedram"),
m_bgvram(*this, "bgvram"),
- m_fgvram(*this, "fgvram"),
- m_fgattr(*this, "fgattr")
+ m_txvram(*this, "txvram"),
+ m_io_dsw(*this, "DSW%u", 1U)
{
}
- void toypop(machine_config &config);
- void liblrabl(machine_config &config);
+ void toypop(machine_config &config) ATTR_COLD;
+ void liblrabl(machine_config &config) ATTR_COLD;
+
+protected:
+ // driver_device overrides
+ virtual void machine_start() override ATTR_COLD;
+ virtual void machine_reset() override ATTR_COLD;
+ virtual void video_start() override ATTR_COLD;
private:
- required_device m_master_cpu;
- required_device m_slave_cpu;
- required_device m_sound_cpu;
+ required_device m_maincpu;
+ required_device m_subcpu;
+ required_device m_soundcpu;
required_device m_namco15xx;
required_device m_namco58xx;
@@ -79,61 +84,57 @@ class namcos16_state : public driver_device
required_device m_palette;
required_device m_gfxdecode;
- required_shared_ptr m_master_workram;
- required_shared_ptr m_slave_sharedram;
- required_shared_ptr m_bgvram;
- required_shared_ptr m_fgvram;
- required_shared_ptr m_fgattr;
+ required_shared_ptr m_spriteram;
+ required_shared_ptr m_sharedram;
+ required_shared_ptr m_bgvram;
+ required_shared_ptr m_txvram;
- uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ required_ioport_array<2> m_io_dsw;
- TIMER_DEVICE_CALLBACK_MEMBER(master_scanline);
- void slave_vblank_irq(int state);
+ tilemap_t *m_tx_tilemap;
+ u8 m_pal_bank = 0;
- uint8_t irq_enable_r();
- void irq_disable_w(uint8_t data);
- void irq_ctrl_w(offs_t offset, uint8_t data);
- void toypop_palette(palette_device &palette) const;
- uint8_t dipA_l();
- uint8_t dipA_h();
- uint8_t dipB_l();
- uint8_t dipB_h();
- //void out_coin0(uint8_t data);
- //void out_coin1(uint8_t data);
- void pal_bank_w(offs_t offset, uint8_t data);
- void flip(uint8_t data);
- void slave_halt_ctrl_w(offs_t offset, uint8_t data);
- uint8_t slave_shared_r(offs_t offset);
- void slave_shared_w(offs_t offset, uint8_t data);
- void slave_irq_enable_w(offs_t offset, uint16_t data);
- void sound_halt_ctrl_w(offs_t offset, uint8_t data);
- uint8_t bg_rmw_r(offs_t offset);
- void bg_rmw_w(offs_t offset, uint8_t data);
-
- void master_liblrabl_map(address_map &map) ATTR_COLD;
- void master_toypop_map(address_map &map) ATTR_COLD;
- void namcos16_master_base_map(address_map &map) ATTR_COLD;
- void slave_map(address_map &map) ATTR_COLD;
- void sound_map(address_map &map) ATTR_COLD;
+ bool m_main_irq_enable = false;
+ bool m_sub_irq_enable = false;
- // driver_device overrides
-// virtual void machine_start() override ATTR_COLD;
- virtual void machine_reset() override ATTR_COLD;
+ TIMER_DEVICE_CALLBACK_MEMBER(main_scanline);
+ void vblank_irq(int state);
+
+ u8 irq_enable_r();
+ void irq_disable_w(u8 data);
+ void irq_ctrl_w(offs_t offset, u8 data);
+ template u8 dip_l();
+ template u8 dip_h();
+ void pal_bank_w(offs_t offset, u8 data);
+ void flip(u8 data);
+ void sub_halt_ctrl_w(offs_t offset, u8 data);
+ u8 sharedram_r(offs_t offset);
+ void sharedram_w(offs_t offset, u8 data);
+ void sub_irq_enable_w(offs_t offset, u16 data);
+ void sound_halt_ctrl_w(offs_t offset, u8 data);
+
+ void txvram_w(offs_t offset, u8 data);
+ u8 bg_rmw_r(offs_t offset);
+ void bg_rmw_w(offs_t offset, u8 data);
-// virtual void video_start() override ATTR_COLD;
+ void toypop_palette(palette_device &palette) const;
+ TILE_GET_INFO_MEMBER(get_tile_info);
+ TILEMAP_MAPPER_MEMBER(tilemap_scan);
+ u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- bool m_master_irq_enable = false;
- bool m_slave_irq_enable = false;
- uint8_t m_pal_bank = 0;
+ void draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect, bool flip);
+ void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, bool flip);
- void legacy_bg_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip);
- void legacy_fg_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip);
- void legacy_obj_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip);
+ void liblrabl_main_map(address_map &map) ATTR_COLD;
+ void main_base_map(address_map &map) ATTR_COLD;
+ void sound_map(address_map &map) ATTR_COLD;
+ void sub_map(address_map &map) ATTR_COLD;
+ void toypop_main_map(address_map &map) ATTR_COLD;
};
void namcos16_state::toypop_palette(palette_device &palette) const
{
- uint8_t const *const color_prom = memregion("proms")->base();
+ u8 const *const color_prom = memregion("proms")->base();
for (int i = 0; i < 256; i++)
{
@@ -168,7 +169,7 @@ void namcos16_state::toypop_palette(palette_device &palette) const
palette.set_pen_indirect(i + 1*256, (color_prom[i + 0x300] & 0x0f) | 0xf0);
// sprites
- uint8_t const entry = color_prom[i + 0x500];
+ u8 const entry = color_prom[i + 0x500];
palette.set_pen_indirect(i + 2*256, entry);
}
@@ -180,20 +181,46 @@ void namcos16_state::toypop_palette(palette_device &palette) const
}
}
-void namcos16_state::legacy_bg_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip)
+TILE_GET_INFO_MEMBER(namcos16_state::get_tile_info)
{
- uint16_t const pal_base = 0x300 + (m_pal_bank << 4);
- uint32_t const src_base = 0x200/2;
- uint16_t const src_pitch = 288 / 2;
+ const u32 code = m_txvram[tile_index];
+ const u32 color = (m_txvram[tile_index + 0x400] & 0x3f) + (m_pal_bank << 6);
+ tileinfo.set(0, code, color, 0);
+}
+
+/* convert from 32x32 to 36x28 */
+TILEMAP_MAPPER_MEMBER(namcos16_state::tilemap_scan)
+{
+ row += 2;
+ col -= 2;
+ if (col & 0x20)
+ return row + ((col & 0x1f) << 5);
+ else
+ return col + (row << 5);
+}
+
+void namcos16_state::video_start()
+{
+ m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcos16_state::get_tile_info)), tilemap_mapper_delegate(*this, FUNC(namcos16_state::tilemap_scan)), 8, 8, 36, 28);
+ m_tx_tilemap->set_transparent_pen(0);
+
+ save_item(NAME(m_pal_bank));
+}
+
+void namcos16_state::draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect, bool flip)
+{
+ u16 const pal_base = 0x300 + (m_pal_bank << 4);
+ u32 const src_base = 0x200/2;
+ u16 const src_pitch = 288 / 2;
for (int y = cliprect.min_y; y <= cliprect.max_y; ++y)
{
- uint16_t const *src = &m_bgvram[y * src_pitch + cliprect.min_x + src_base];
- uint16_t *dst = &bitmap.pix(flip ? (cliprect.max_y - y) : y, flip ? cliprect.max_x : cliprect.min_x);
+ u16 const *src = &m_bgvram[y * src_pitch + cliprect.min_x + src_base];
+ u16 *dst = &bitmap.pix(flip ? (cliprect.max_y - y) : y, flip ? cliprect.max_x : cliprect.min_x);
for (int x = cliprect.min_x; x <= cliprect.max_x; x += 2)
{
- uint32_t const srcpix = *src++;
+ u32 const srcpix = *src++;
int const idx1 = ((srcpix >> 8) & 0xf) + pal_base;
int const idx2 = (srcpix & 0xf) + pal_base;
if (!flip)
@@ -210,76 +237,37 @@ void namcos16_state::legacy_bg_draw(bitmap_ind16 &bitmap,const rectangle &clipre
}
}
-void namcos16_state::legacy_fg_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip)
-{
- gfx_element *const gfx_0 = m_gfxdecode->gfx(0);
-
- for (int count = 0; count < 32*32; count++)
- {
- int const xoffs(count >> 5);
- int const yoffs(count & 0x1f);
- int x;// = (count % 32);
- int y; //= count / 32;
-
- if (count < 64)
- {
- x = 34 + xoffs;
- y = yoffs - 2;
- }
- else if (count >= 32*30)
- {
- x = xoffs - 30;
- y = yoffs - 2;
- }
- else
- {
- x = 2 + yoffs;
- y = xoffs - 2;
- }
-
- uint16_t tile = m_fgvram[count];
- uint8_t color = (m_fgattr[count] & 0x3f) + (m_pal_bank << 6);
-
- gfx_0->transpen(bitmap, cliprect, tile, color, flip, flip, (flip ? 35-x : x)*8, (flip ? 27-y : y)*8, 0);
- }
-}
-
// TODO: this is likely to be a lot more complex, and maybe is per scanline too
-void namcos16_state::legacy_obj_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip)
+void namcos16_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip)
{
- gfx_element *gfx_1 = m_gfxdecode->gfx(1);
- int count;
- uint8_t *base_spriteram = m_master_workram;
- const uint16_t bank1 = 0x0800;
- const uint16_t bank2 = 0x1000;
+ gfx_element *const gfx_1 = m_gfxdecode->gfx(1);
+ u16 const bank1 = 0x0800;
+ u16 const bank2 = 0x1000;
-
- for (count=0x780;count<0x800;count+=2)
+ static const int gfx_offs[2][2] =
{
- bool enabled = (base_spriteram[count+bank2+1] & 2) == 0;
-
- if(enabled == false)
+ { 0, 1 },
+ { 2, 3 }
+ };
+ for (int count = 0x780; count < 0x800; count += 2)
+ {
+ if (BIT(m_spriteram[count+bank2+1], 1))
continue;
- static const int gfx_offs[2][2] =
- {
- { 0, 1 },
- { 2, 3 }
- };
- uint8_t tile = base_spriteram[count];
- uint8_t color = base_spriteram[count+1];
- int x = base_spriteram[count+bank1+1] + (base_spriteram[count+bank2+1] << 8);
+ u8 tile = m_spriteram[count];
+ u8 const color = m_spriteram[count+1];
+ int x = m_spriteram[count+bank1+1] + (m_spriteram[count+bank2+1] << 8);
x -= 71;
- int y = base_spriteram[count+bank1+0];
+ int y = m_spriteram[count+bank1+0];
y += 7;
// TODO: actually m_screen.height()
y = 224 - y;
- bool fx = (base_spriteram[count+bank2] & 1) == 1;
- bool fy = (base_spriteram[count+bank2] & 2) == 2;
- uint8_t width = ((base_spriteram[count+bank2] & 4) >> 2) + 1;
- uint8_t height = ((base_spriteram[count+bank2] & 8) >> 3) + 1;
+ bool fx = (m_spriteram[count+bank2] & 1) == 1;
+ bool fy = (m_spriteram[count+bank2] & 2) == 2;
+ u8 const width = ((m_spriteram[count+bank2] & 4) >> 2) + 1;
+ u8 const height = ((m_spriteram[count+bank2] & 8) >> 3) + 1;
tile &= ~(width - 1);
tile &= ~((height - 1) << 1);
@@ -291,120 +279,128 @@ void namcos16_state::legacy_obj_draw(bitmap_ind16 &bitmap,const rectangle &clipr
}
if (height == 2)
- y -=16;
+ y -= 16;
- for (int yi=0; yitransmask(bitmap,cliprect,sprite_offs,color,fx,fy,x + xi*16,y + yi *16,m_palette->transpen_mask(*gfx_1, color, 0xff));
+ u16 const sprite_offs = tile + gfx_offs[yi ^ ((height - 1) * fy)][xi ^ ((width - 1) * fx)];
+ gfx_1->transmask(bitmap, cliprect,
+ sprite_offs,
+ color,
+ fx, fy,
+ x + xi * 16, y + yi * 16,
+ m_palette->transpen_mask(*gfx_1, color, 0xff));
}
}
}
}
-uint32_t namcos16_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
+u32 namcos16_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bool const flip = flip_screen();
- legacy_bg_draw(bitmap,cliprect,flip);
- legacy_fg_draw(bitmap,cliprect,flip);
- legacy_obj_draw(bitmap,cliprect,flip);
+ draw_background(bitmap, cliprect, flip);
+ m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ draw_sprites(bitmap, cliprect, flip);
return 0;
}
-uint8_t namcos16_state::irq_enable_r()
+u8 namcos16_state::irq_enable_r()
{
- m_master_irq_enable = true;
+ if (!machine().side_effects_disabled())
+ m_main_irq_enable = true;
return 0;
}
-void namcos16_state::irq_disable_w(uint8_t data)
+void namcos16_state::irq_disable_w(u8 data)
{
- m_master_irq_enable = false;
+ m_main_irq_enable = false;
}
-void namcos16_state::irq_ctrl_w(offs_t offset, uint8_t data)
+void namcos16_state::irq_ctrl_w(offs_t offset, u8 data)
{
- m_master_irq_enable = (offset & 0x0800) ? false : true;
+ m_main_irq_enable = BIT(~offset, 11);
}
-void namcos16_state::slave_halt_ctrl_w(offs_t offset, uint8_t data)
+void namcos16_state::sub_halt_ctrl_w(offs_t offset, u8 data)
{
- m_slave_cpu->set_input_line(INPUT_LINE_RESET,offset & 0x800 ? ASSERT_LINE : CLEAR_LINE);
+ m_subcpu->set_input_line(INPUT_LINE_RESET, BIT(offset, 11));
}
-void namcos16_state::sound_halt_ctrl_w(offs_t offset, uint8_t data)
+void namcos16_state::sound_halt_ctrl_w(offs_t offset, u8 data)
{
- m_sound_cpu->set_input_line(INPUT_LINE_RESET,offset & 0x800 ? ASSERT_LINE : CLEAR_LINE);
+ m_soundcpu->set_input_line(INPUT_LINE_RESET, BIT(offset, 11));
}
-uint8_t namcos16_state::slave_shared_r(offs_t offset)
+u8 namcos16_state::sharedram_r(offs_t offset)
{
- return m_slave_sharedram[offset];
+ return m_sharedram[offset];
}
-void namcos16_state::slave_shared_w(offs_t offset, uint8_t data)
+void namcos16_state::sharedram_w(offs_t offset, u8 data)
{
- m_slave_sharedram[offset] = data;
+ m_sharedram[offset] = data;
}
-void namcos16_state::slave_irq_enable_w(offs_t offset, uint16_t data)
+void namcos16_state::sub_irq_enable_w(offs_t offset, u16 data)
{
- m_slave_irq_enable = (offset & 0x40000) ? false : true;
+ m_sub_irq_enable = BIT(~offset, 18);
}
-uint8_t namcos16_state::bg_rmw_r(offs_t offset)
+u8 namcos16_state::bg_rmw_r(offs_t offset)
{
- uint8_t res;
-
- res = 0;
+ u8 res = 0;
// note: following offset is written as offset * 2
res |= (m_bgvram[offset] & 0x0f00) >> 4;
res |= (m_bgvram[offset] & 0x000f);
return res;
}
-void namcos16_state::bg_rmw_w(offs_t offset, uint8_t data)
+void namcos16_state::bg_rmw_w(offs_t offset, u8 data)
{
// note: following offset is written as offset * 2
m_bgvram[offset] = (data & 0xf) | ((data & 0xf0) << 4);
}
-uint8_t namcos16_state::dipA_l() { return ioport("DSW1")->read(); } // dips A
-uint8_t namcos16_state::dipA_h() { return ioport("DSW1")->read() >> 4; } // dips A
-uint8_t namcos16_state::dipB_l() { return ioport("DSW2")->read(); } // dips B
-uint8_t namcos16_state::dipB_h() { return ioport("DSW2")->read() >> 4; } // dips B
+void namcos16_state::txvram_w(offs_t offset, u8 data)
+{
+ m_txvram[offset] = data;
+ m_tx_tilemap->mark_tile_dirty(offset & 0x3ff);
+}
+
+template u8 namcos16_state::dip_l() { return m_io_dsw[Which]->read(); }
+template u8 namcos16_state::dip_h() { return m_io_dsw[Which]->read() >> 4; }
-void namcos16_state::flip(uint8_t data)
+void namcos16_state::flip(u8 data)
{
- flip_screen_set(data & 1);
+ flip_screen_set(BIT(data, 0));
}
-void namcos16_state::pal_bank_w(offs_t offset, uint8_t data)
+void namcos16_state::pal_bank_w(offs_t offset, u8 data)
{
- m_pal_bank = offset & 1;
+ m_pal_bank = BIT(offset, 0);
+ m_tx_tilemap->mark_all_dirty();
}
-void namcos16_state::namcos16_master_base_map(address_map &map)
+void namcos16_state::main_base_map(address_map &map)
{
- map(0x0000, 0x03ff).ram().share("fgvram");
- map(0x0400, 0x07ff).ram().share("fgattr");
- map(0x0800, 0x1fff).ram().share("master_workram");
- map(0x2800, 0x2fff).ram().share("slave_sharedram");
+ map(0x0000, 0x07ff).ram().w(FUNC(namcos16_state::txvram_w)).share(m_txvram);
+ map(0x0800, 0x1fff).ram().share(m_spriteram);
+ map(0x2800, 0x2fff).ram().share(m_sharedram);
// 0x6000 - 0x7fff i/o specific, guessing PAL controlled.
- map(0x8000, 0x8fff).w(FUNC(namcos16_state::slave_halt_ctrl_w));
+ map(0x8000, 0xffff).rom().region("maincpu", 0);
+ map(0x8000, 0x8fff).w(FUNC(namcos16_state::sub_halt_ctrl_w));
map(0x9000, 0x9fff).w(FUNC(namcos16_state::sound_halt_ctrl_w));
map(0xa000, 0xa001).w(FUNC(namcos16_state::pal_bank_w));
- map(0x8000, 0xffff).rom().region("master_rom", 0);
}
-void namcos16_state::master_liblrabl_map(address_map &map)
+void namcos16_state::liblrabl_main_map(address_map &map)
{
- namcos16_master_base_map(map);
+ main_base_map(map);
map(0x6000, 0x63ff).rw(m_namco15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w));
map(0x6800, 0x680f).rw(m_namco58xx, FUNC(namco58xx_device::read), FUNC(namco58xx_device::write));
map(0x6810, 0x681f).rw(m_namco56xx_1, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write));
@@ -412,9 +408,9 @@ void namcos16_state::master_liblrabl_map(address_map &map)
map(0x7000, 0x7fff).nopr().w(FUNC(namcos16_state::irq_ctrl_w));
}
-void namcos16_state::master_toypop_map(address_map &map)
+void namcos16_state::toypop_main_map(address_map &map)
{
- namcos16_master_base_map(map);
+ main_base_map(map);
map(0x6000, 0x600f).rw(m_namco58xx, FUNC(namco58xx_device::read), FUNC(namco58xx_device::write));
map(0x6010, 0x601f).rw(m_namco56xx_1, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write));
map(0x6020, 0x602f).rw(m_namco56xx_2, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write));
@@ -422,20 +418,20 @@ void namcos16_state::master_toypop_map(address_map &map)
map(0x7000, 0x7000).rw(FUNC(namcos16_state::irq_enable_r), FUNC(namcos16_state::irq_disable_w));
}
-void namcos16_state::slave_map(address_map &map)
+void namcos16_state::sub_map(address_map &map)
{
- map(0x000000, 0x007fff).rom().region("slave_rom", 0);
+ map(0x000000, 0x007fff).rom().region("sub", 0);
map(0x080000, 0x0bffff).ram();
- map(0x100000, 0x100fff).rw(FUNC(namcos16_state::slave_shared_r), FUNC(namcos16_state::slave_shared_w)).umask16(0x00ff);
+ map(0x100000, 0x100fff).rw(FUNC(namcos16_state::sharedram_r), FUNC(namcos16_state::sharedram_w)).umask16(0x00ff);
map(0x180000, 0x187fff).rw(FUNC(namcos16_state::bg_rmw_r), FUNC(namcos16_state::bg_rmw_w));
- map(0x190000, 0x1dffff).ram().share("bgvram");
- map(0x300000, 0x3fffff).w(FUNC(namcos16_state::slave_irq_enable_w));
+ map(0x190000, 0x1dffff).ram().share(m_bgvram);
+ map(0x300000, 0x3fffff).w(FUNC(namcos16_state::sub_irq_enable_w));
}
void namcos16_state::sound_map(address_map &map)
{
map(0x0000, 0x03ff).rw(m_namco15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w));
- map(0xe000, 0xffff).rom().region("sound_rom", 0);
+ map(0xe000, 0xffff).rom().region("soundcpu", 0);
}
@@ -487,10 +483,10 @@ static INPUT_PORTS_START( liblrabl )
PORT_DIPSETTING( 0x01, "5" )
PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWA:6,5,4")
// bonus scores for common
- PORT_DIPSETTING( 0x1c, "40k 120k 200k 400k 600k 1m" )
- PORT_DIPSETTING( 0x0c, "40k 140k 250k 400k 700k 1m" )
+ PORT_DIPSETTING( 0x1c, "40k 120k 200k 400k 600k 1M" )
+ PORT_DIPSETTING( 0x0c, "40k 140k 250k 400k 700k 1M" )
// bonus scores for 1, 2 or 3 lives
- PORT_DIPSETTING( 0x14, "50k 150k 300k 500k 700k 1m" ) PORT_CONDITION("DSW1", 0x03, NOTEQUALS, 0x01)
+ PORT_DIPSETTING( 0x14, "50k 150k 300k 500k 700k 1M" ) PORT_CONDITION("DSW1", 0x03, NOTEQUALS, 0x01)
PORT_DIPSETTING( 0x04, "40k 120k and every 120k" ) PORT_CONDITION("DSW1", 0x03, NOTEQUALS, 0x01)
PORT_DIPSETTING( 0x18, "40k 150k and every 150k" ) PORT_CONDITION("DSW1", 0x03, NOTEQUALS, 0x01)
PORT_DIPSETTING( 0x08, "50k 150k 300k" ) PORT_CONDITION("DSW1", 0x03, NOTEQUALS, 0x01)
@@ -637,10 +633,10 @@ static const gfx_layout charlayout =
8,8,
RGN_FRAC(1,1),
2,
- { 0, 4 },
- { 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 16*8
+ { STEP2(0, 4) },
+ { STEP4(8*8, 1), STEP4(0, 1) },
+ { STEP8(0, 8) },
+ 8*8*2
};
static const gfx_layout spritelayout =
@@ -648,36 +644,40 @@ static const gfx_layout spritelayout =
16,16,
RGN_FRAC(1,1),
2,
- { 0, 4 },
- { 0, 1, 2, 3, 8*8, 8*8+1, 8*8+2, 8*8+3, 16*8+0, 16*8+1, 16*8+2, 16*8+3,
- 24*8+0, 24*8+1, 24*8+2, 24*8+3 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
- 32 * 8, 33 * 8, 34 * 8, 35 * 8, 36 * 8, 37 * 8, 38 * 8, 39 * 8 },
- 64*8
+ { STEP2(0, 4) },
+ { STEP4(0, 1), STEP4(8*8, 1), STEP4(16*8, 1), STEP4(24*8, 1) },
+ { STEP8(0, 8), STEP8(32*8, 8) },
+ 16*16*2
};
static GFXDECODE_START( gfx_toypop )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 128 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 128*4, 64 )
+ GFXDECODE_ENTRY( "tiles", 0, charlayout, 0, 128 )
+ GFXDECODE_ENTRY( "sprites", 0, spritelayout, 128*4, 64 )
GFXDECODE_END
+void namcos16_state::machine_start()
+{
+ save_item(NAME(m_main_irq_enable));
+ save_item(NAME(m_sub_irq_enable));
+}
+
void namcos16_state::machine_reset()
{
- m_master_irq_enable = false;
- m_slave_irq_enable = false;
- m_slave_cpu->set_input_line(INPUT_LINE_RESET,ASSERT_LINE);
- m_sound_cpu->set_input_line(INPUT_LINE_RESET,ASSERT_LINE);
+ m_main_irq_enable = false;
+ m_sub_irq_enable = false;
+ m_subcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
+ m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
}
-TIMER_DEVICE_CALLBACK_MEMBER(namcos16_state::master_scanline)
+TIMER_DEVICE_CALLBACK_MEMBER(namcos16_state::main_scanline)
{
- int scanline = param;
+ int const scanline = param;
- if(scanline == 224 && m_master_irq_enable == true)
- m_master_cpu->set_input_line(M6809_IRQ_LINE,HOLD_LINE);
+ if (scanline == 224 && m_main_irq_enable)
+ m_maincpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE);
// TODO: definitely can't fire from this, presume that a command send has a timing response ...
- if(scanline == 0)
+ if (scanline == 0)
{
if (!m_namco58xx->read_reset_line())
m_namco58xx->customio_run();
@@ -690,24 +690,26 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcos16_state::master_scanline)
}
}
-void namcos16_state::slave_vblank_irq(int state)
+void namcos16_state::vblank_irq(int state)
{
- if (state && m_slave_irq_enable == true)
- m_slave_cpu->set_input_line(6, HOLD_LINE);
+ if (state && m_sub_irq_enable)
+ m_subcpu->set_input_line(6, HOLD_LINE);
}
void namcos16_state::liblrabl(machine_config &config)
{
- MC6809E(config, m_master_cpu, MASTER_CLOCK/4);
- m_master_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::master_liblrabl_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(namcos16_state::master_scanline), "screen", 0, 1);
+ constexpr XTAL MASTER_CLOCK = XTAL(6'144'000);
+
+ MC6809E(config, m_maincpu, MASTER_CLOCK / 4);
+ m_maincpu->set_addrmap(AS_PROGRAM, &namcos16_state::liblrabl_main_map);
+ TIMER(config, "scantimer").configure_scanline(FUNC(namcos16_state::main_scanline), "screen", 0, 1);
- M68000(config, m_slave_cpu, MASTER_CLOCK);
- m_slave_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::slave_map);
+ M68000(config, m_subcpu, MASTER_CLOCK);
+ m_subcpu->set_addrmap(AS_PROGRAM, &namcos16_state::sub_map);
- MC6809E(config, m_sound_cpu, MASTER_CLOCK/4);
- m_sound_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::sound_map);
- m_sound_cpu->set_periodic_int(FUNC(namcos16_state::irq0_line_hold), attotime::from_hz(60));
+ MC6809E(config, m_soundcpu, MASTER_CLOCK / 4);
+ m_soundcpu->set_addrmap(AS_PROGRAM, &namcos16_state::sound_map);
+ m_soundcpu->set_periodic_int(FUNC(namcos16_state::irq0_line_hold), attotime::from_hz(60));
NAMCO_58XX(config, m_namco58xx, 0);
m_namco58xx->in_callback<0>().set_ioport("COINS");
@@ -716,10 +718,10 @@ void namcos16_state::liblrabl(machine_config &config)
m_namco58xx->in_callback<3>().set_ioport("BUTTONS");
NAMCO_56XX(config, m_namco56xx_1, 0);
- m_namco56xx_1->in_callback<0>().set(FUNC(namcos16_state::dipA_h));
- m_namco56xx_1->in_callback<1>().set(FUNC(namcos16_state::dipB_l));
- m_namco56xx_1->in_callback<2>().set(FUNC(namcos16_state::dipB_h));
- m_namco56xx_1->in_callback<3>().set(FUNC(namcos16_state::dipA_l));
+ m_namco56xx_1->in_callback<0>().set(FUNC(namcos16_state::dip_h<0>));
+ m_namco56xx_1->in_callback<1>().set(FUNC(namcos16_state::dip_l<1>));
+ m_namco56xx_1->in_callback<2>().set(FUNC(namcos16_state::dip_h<1>));
+ m_namco56xx_1->in_callback<3>().set(FUNC(namcos16_state::dip_l<0>));
m_namco56xx_1->out_callback<0>().set(FUNC(namcos16_state::flip));
NAMCO_56XX(config, m_namco56xx_2, 0);
@@ -728,17 +730,17 @@ void namcos16_state::liblrabl(machine_config &config)
m_namco56xx_2->in_callback<3>().set_ioport("SERVICE");
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MASTER_CLOCK,384,0,288,264,0,224); // derived from Galaxian HW, 60.606060
+ screen.set_raw(MASTER_CLOCK, 384, 0, 288, 264, 0, 224); // derived from Galaxian HW, 60.606060
screen.set_screen_update(FUNC(namcos16_state::screen_update));
screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(namcos16_state::slave_vblank_irq));
+ screen.screen_vblank().set(FUNC(namcos16_state::vblank_irq));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_toypop);
PALETTE(config, m_palette, FUNC(namcos16_state::toypop_palette), 128*4 + 64*4 + 16*2, 256);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- NAMCO_15XX(config, m_namco15xx, 24000);
+ NAMCO_15XX(config, m_namco15xx, MASTER_CLOCK / 256);
m_namco15xx->set_voices(8);
m_namco15xx->add_route(ALL_OUTPUTS, "mono", 1.0);
}
@@ -746,26 +748,26 @@ void namcos16_state::liblrabl(machine_config &config)
void namcos16_state::toypop(machine_config &config)
{
liblrabl(config);
- m_master_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::master_toypop_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &namcos16_state::toypop_main_map);
}
ROM_START( liblrabl )
- ROM_REGION( 0x8000, "master_rom", 0 )
+ ROM_REGION( 0x8000, "maincpu", 0 )
ROM_LOAD( "5b.rom", 0x0000, 0x4000, CRC(da7a93c2) SHA1(fe4a02cdab66722eb7b8cf58825f899b1949a6a2) )
ROM_LOAD( "5c.rom", 0x4000, 0x4000, CRC(6cae25dc) SHA1(de74317a7d5de1865d096c377923a764be5e6879) )
- ROM_REGION( 0x2000, "sound_rom", 0 )
+ ROM_REGION( 0x2000, "soundcpu", 0 )
ROM_LOAD( "2c.rom", 0x0000, 0x2000, CRC(7c09e50a) SHA1(5f004d60bbb7355e008a9cda137b28bc2192b8ef) )
- ROM_REGION16_BE( 0x8000, "slave_rom", 0 )
+ ROM_REGION16_BE( 0x8000, "sub", 0 )
ROM_LOAD16_BYTE("8c.rom", 0x0000, 0x4000, CRC(a00cd959) SHA1(cc5621103c31cfbc65941615cab391db0f74e6ce) )
ROM_LOAD16_BYTE("10c.rom", 0x0001, 0x4000, CRC(09ce209b) SHA1(2ed46d6592f8227bac8ab54963d9a300706ade47) )
- ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_REGION( 0x2000, "tiles", 0 )
ROM_LOAD( "5p.rom", 0x0000, 0x2000, CRC(3b4937f0) SHA1(06d9de576f1c2262c34aeb91054e68c9298af688) )
- ROM_REGION( 0x4000, "gfx2", 0 )
+ ROM_REGION( 0x4000, "sprites", 0 )
ROM_LOAD( "9t.rom", 0x0000, 0x4000, CRC(a88e24ca) SHA1(eada133579f19de09255084dcdc386311606a335) )
ROM_REGION( 0x0600, "proms", 0 )
@@ -780,21 +782,21 @@ ROM_START( liblrabl )
ROM_END
ROM_START( toypop )
- ROM_REGION( 0x8000, "master_rom", 0 )
+ ROM_REGION( 0x8000, "maincpu", 0 )
ROM_LOAD( "tp1-2.5b", 0x0000, 0x4000, CRC(87469620) SHA1(2ee257486c9c044386ac7d0cd4a90583eaeb3e97) )
ROM_LOAD( "tp1-1.5c", 0x4000, 0x4000, CRC(dee2fd6e) SHA1(b2c12008d6d3e7544ba3c12a52a6abf9181842c8) )
- ROM_REGION( 0x2000, "sound_rom", 0 )
+ ROM_REGION( 0x2000, "soundcpu", 0 )
ROM_LOAD( "tp1-3.2c", 0x0000, 0x2000, CRC(5f3bf6e2) SHA1(d1b3335661b9b23cb10001416c515b77b5e783e9) )
- ROM_REGION16_BE( 0x8000, "slave_rom", 0 )
+ ROM_REGION16_BE( 0x8000, "sub", 0 )
ROM_LOAD16_BYTE("tp1-4.8c", 0x0000, 0x4000, CRC(76997db3) SHA1(5023a2f20a5f2c9baff130f6832583493c71f883) )
ROM_LOAD16_BYTE("tp1-5.10c", 0x0001, 0x4000, CRC(37de8786) SHA1(710365e34c05d01815844c414518f93234b6160b) )
- ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_REGION( 0x2000, "tiles", 0 )
ROM_LOAD( "tp1-7.5p", 0x0000, 0x2000, CRC(95076f9e) SHA1(1e3d32b21f6d46591ec3921aba51f672d64a9023) )
- ROM_REGION( 0x4000, "gfx2", 0 )
+ ROM_REGION( 0x4000, "sprites", 0 )
ROM_LOAD( "tp1-6.9t", 0x0000, 0x4000, CRC(481ffeaf) SHA1(c51735ad3a1dbb46ad414408b54554e9223b2219) )
ROM_REGION( 0x0600, "proms", 0 )
diff --git a/src/mame/omori/yakyuken.cpp b/src/mame/omori/yakyuken.cpp
index a252163c8cf8e..d26c645159ae6 100644
--- a/src/mame/omori/yakyuken.cpp
+++ b/src/mame/omori/yakyuken.cpp
@@ -32,8 +32,6 @@ The riser board has a pair of HM4334 1K*4 static RAMs and a quad 2-input NAND ga
- game sometimes leaves gaps when the lady is undressing
- colors aren't 100% correct (see i.e. the stripes in the curtains), reference video:
https://www.youtube.com/watch?v=zTOFIhuwR2w
-- verify sound pitch (unfortunately, no pcb sound in above video)
-- verify irq frequency, though it looks similar to the pcb video
*/
@@ -276,9 +274,7 @@ void yakyuken_state::yakyuken(machine_config &config)
Z80(config, m_maincpu, 18.432_MHz_XTAL / 3 / 2); // 3.072 MHz
m_maincpu->set_addrmap(AS_PROGRAM, &yakyuken_state::main_program_map);
m_maincpu->set_addrmap(AS_IO, &yakyuken_state::main_io_map);
-
- attotime irq_period = attotime::from_ticks(0x2000, 18.432_MHz_XTAL / 3);
- m_maincpu->set_periodic_int(FUNC(yakyuken_state::irq0_line_hold), irq_period);
+ m_maincpu->set_periodic_int(FUNC(yakyuken_state::irq0_line_hold), attotime::from_hz(4*60));
Z80(config, m_audiocpu, 18.432_MHz_XTAL / 3 / 4); // 1.536 MHz
m_audiocpu->set_addrmap(AS_PROGRAM, &yakyuken_state::sound_program_map);
@@ -304,7 +300,8 @@ void yakyuken_state::yakyuken(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- AY8910(config, m_ay, 18.432_MHz_XTAL / 3 / 16).add_route(ALL_OUTPUTS, "mono", 0.35);
+ AY8910(config, m_ay, 18.432_MHz_XTAL / 3 / 4); // 1.536 MHz
+ m_ay->add_route(ALL_OUTPUTS, "mono", 0.35);
}
diff --git a/src/mame/psion/mc400.cpp b/src/mame/psion/mc400.cpp
index 0b28a9d45d308..4d2e0ce53ef10 100644
--- a/src/mame/psion/mc400.cpp
+++ b/src/mame/psion/mc400.cpp
@@ -277,10 +277,10 @@ INPUT_CHANGED_MEMBER(psionmc_state::key_on)
//INPUT_CHANGED_MEMBER(psionmc_state::reset)
//{
-// if (newval)
-// {
-// m_asic2->reset_w(0);
-// }
+// if (newval)
+// {
+// m_asic2->reset_w(0);
+// }
//}
INPUT_CHANGED_MEMBER(psionmc_state::digitiser_changed)
diff --git a/src/mame/skeleton/easy_karaoke.cpp b/src/mame/skeleton/easy_karaoke.cpp
index 47db0842f7880..a69b987f4e1f9 100644
--- a/src/mame/skeleton/easy_karaoke.cpp
+++ b/src/mame/skeleton/easy_karaoke.cpp
@@ -79,11 +79,11 @@
------------------
- For units which allow downloadable songs the only difference in the bootloader ROMs is a couple of bytes
- at the end. This may be used as security, to tie the downloads stored in the flash ROM to the units as
- the format of the downloaded data in the flash ROMs appears to be different in each case, starting with
- different unique bytes after the header information for each unit we've seen. (maybe encryption?)
- The bootloader ROM has a unique ID on a sticker in each case too (could be a bytesum, haven't checked)
+ For units which allow downloadable songs the only difference in the bootloader ROMs is a couple of bytes
+ at the end. This may be used as security, to tie the downloads stored in the flash ROM to the units as
+ the format of the downloaded data in the flash ROMs appears to be different in each case, starting with
+ different unique bytes after the header information for each unit we've seen. (maybe encryption?)
+ The bootloader ROM has a unique ID on a sticker in each case too (could be a bytesum, haven't checked)
*******************************************************************************/
diff --git a/src/mame/toaplan/dogyuun.cpp b/src/mame/toaplan/dogyuun.cpp
index 00a780f6cf15b..28230636490ab 100644
--- a/src/mame/toaplan/dogyuun.cpp
+++ b/src/mame/toaplan/dogyuun.cpp
@@ -115,7 +115,7 @@ void dogyuun_state::video_start()
void dogyuun_state::screen_vblank(int state)
{
- if (state) // rising edge
+ if (state) // rising edge
{
m_vdp[0]->screen_eof();
m_vdp[1]->screen_eof();
diff --git a/src/mame/toaplan/dt7.cpp b/src/mame/toaplan/dt7.cpp
index a8ab367ef92fd..a78b1933f602e 100644
--- a/src/mame/toaplan/dt7.cpp
+++ b/src/mame/toaplan/dt7.cpp
@@ -12,7 +12,7 @@
- verify frequencies on chips
- verify alt titles, some regions have 'Car Fighting' as a subtitle, region comes from EEPROM?
- verify text layer palettes
- - service mode doesn't display properly
+ - service mode doesn't display properly
- currently only coins up with service button
- sound dies after one stage?
*/
@@ -256,9 +256,9 @@ u8 dt7_state::dt7_shared_ram_hack_r(offs_t offset)
int pc = m_maincpu->pc();
if (pc == 0x7d84) { return 0xff; } // status?
-
+
u32 addr = (offset * 2) + 0x610000;
-
+
if (addr == 0x061f00c) { return m_sysport->read(); }
if (addr == 0x061d000) { return 0x00; } // settings (from EEPROM?) including flipscreen
if (addr == 0x061d002) { return 0x00; } // settings (from EEPROM?) dipswitch?
@@ -266,7 +266,7 @@ u8 dt7_state::dt7_shared_ram_hack_r(offs_t offset)
if (addr == 0x061f004) { return m_p1port->read(); } // P1 inputs
if (addr == 0x061f006) { return m_p2port->read(); } // P2 inputs
//if (addr == 0x061f00e) { return machine().rand(); } // P2 coin / start
-
+
logerror("%08x: dt7_shared_ram_hack_r address %08x ret %02x\n", pc, addr, ret);
return ret;
@@ -282,7 +282,7 @@ void dt7_state::shared_ram_audio_w(offs_t offset, u8 data)
// just a helper function to try and debug the sound CPU a bit more easily
//int pc = m_audiocpu->pc();
//if (offset == 0xf004 / 2)
- // logerror("%08x: shared_ram_audio_w address %08x data %02x\n", pc, offset, data);
+ // logerror("%08x: shared_ram_audio_w address %08x data %02x\n", pc, offset, data);
shared_ram_w(offset, data);
}
diff --git a/src/mame/toaplan/enmadaio.cpp b/src/mame/toaplan/enmadaio.cpp
index e9c27126e1b3d..2d7f6e47f2c4d 100644
--- a/src/mame/toaplan/enmadaio.cpp
+++ b/src/mame/toaplan/enmadaio.cpp
@@ -77,7 +77,7 @@ u32 enmadaio_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
void enmadaio_state::screen_vblank(int state)
{
- if (state) // rising edge
+ if (state) // rising edge
{
m_vdp->screen_eof();
}
diff --git a/src/mame/toaplan/pipibibi.cpp b/src/mame/toaplan/pipibibi.cpp
index 5cf6109866630..f0691d09117ef 100644
--- a/src/mame/toaplan/pipibibi.cpp
+++ b/src/mame/toaplan/pipibibi.cpp
@@ -26,7 +26,7 @@ pipibibsp TP-025 Toaplan Pipi & Bibis / Whoopee!! (Prototype)
pipibibsbl bootleg Toaplan Pipi & Bibis / Whoopee!! (based of the prototype)
TODO:
- - move bootlegs to oneshot.cpp driver
+ - move bootlegs to oneshot.cpp driver
*/
namespace {
diff --git a/src/mame/toaplan/snowbro2.cpp b/src/mame/toaplan/snowbro2.cpp
index 131464c50d9b6..ffd36945edc22 100644
--- a/src/mame/toaplan/snowbro2.cpp
+++ b/src/mame/toaplan/snowbro2.cpp
@@ -20,7 +20,7 @@
Name Board No Maker Game name
----------------------------------------------------------------------------
snowbro2 TP-033 Hanafram Snow Bros. 2 - With New Elves
-
+
*/
namespace {
@@ -75,7 +75,7 @@ u32 snowbro2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
}
void snowbro2_state::screen_vblank(int state)
-{
+{
if (state) // rising edge
{
m_vdp->screen_eof();
diff --git a/src/mame/toaplan/truxton2.cpp b/src/mame/toaplan/truxton2.cpp
index e2350d30fcd43..84ddee1720ac6 100644
--- a/src/mame/toaplan/truxton2.cpp
+++ b/src/mame/toaplan/truxton2.cpp
@@ -136,7 +136,7 @@ void truxton2_state::tx_linescroll_w(offs_t offset, u16 data, u16 mem_mask)
void truxton2_state::screen_vblank(int state)
-{
+{
if (state) // rising edge
{
m_vdp->screen_eof();
diff --git a/src/mame/tvgames/spg2xx_dreamlife.cpp b/src/mame/tvgames/spg2xx_dreamlife.cpp
index ae2ad432733e8..27eb958b889ac 100644
--- a/src/mame/tvgames/spg2xx_dreamlife.cpp
+++ b/src/mame/tvgames/spg2xx_dreamlife.cpp
@@ -1,5 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Ryan Holtz, David Haywood
+/*
+ TODO:
+ Service mode inputs for Giga Pets Explorer
+ Dump and emulate Giga Pets handheld game units
+*/
#include "emu.h"
#include "spg2xx.h"
@@ -79,6 +84,26 @@ static INPUT_PORTS_START( dsgnwrld )
PORT_BIT( 0xf000, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
+static INPUT_PORTS_START( gigapets )
+ PORT_START("P1")
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Select")
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Back") // PCB marking is "Cancel"
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Menu")
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_UNUSED )
+ // TODO: Likely handheld game unit inputs
+ PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON4 )
+ PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON5 )
+ PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON6 )
+ PORT_BIT( 0xc000, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
void dreamlif_state::dreamlif(machine_config &config)
{
SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
@@ -104,9 +129,17 @@ ROM_START( dsgnwrld )
ROM_LOAD16_WORD_SWAP( "designersworld.bin", 0x000000, 0x800000, CRC(b3987161) SHA1(f7d03b172fd0accc6370d9ccc340b3aa6317426f) )
ROM_END
+// PCB Markings: 3059L-R3 0626 / 3059TV-R3B / 3059R-R1 0626
+// Dumped as K8D6X16UTM
+ROM_START( gigapets )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD16_WORD_SWAP( "rom.u7", 0x000000, 0x800000, CRC(beacc99c) SHA1(d6e3ed69e297282b9d85661a7468e0c0a6815d31) )
+ROM_END
+
} // anonymous namespace
// Hasbro games
CONS( 2005, dreamlif, 0, 0, dreamlif, dreamlif, dreamlif_state, empty_init, "Hasbro", "Dream Life (Version 1.0, Feb 07 2005)", MACHINE_IMPERFECT_SOUND )
CONS( 2005, dsgnwrld, 0, 0, dreamlif, dsgnwrld, dreamlif_state, empty_init, "Hasbro", "Designer's World (Version 1.0, Dec 20 2005)", MACHINE_IMPERFECT_SOUND )
+CONS( 2006, gigapets, 0, 0, dreamlif, gigapets, dreamlif_state, empty_init, "Hasbro", "Giga Pets Explorer (Version 1.34.1, Mar 17 2006)", MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/vsystem/gstriker.cpp b/src/mame/vsystem/gstriker.cpp
index 79220645abdd5..be9751a8cc81b 100644
--- a/src/mame/vsystem/gstriker.cpp
+++ b/src/mame/vsystem/gstriker.cpp
@@ -184,6 +184,7 @@ Frequencies: 68k is XTAL_32MHZ/2
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "machine/6850acia.h"
+#include "machine/clock.h"
#include "machine/gen_latch.h"
#include "machine/mb3773.h"
#include "sound/ymopn.h"
@@ -691,8 +692,14 @@ void gstriker_state::gstriker(machine_config &config)
ACIA6850(config, m_acia, 0);
m_acia->irq_handler().set_inputline(m_maincpu, M68K_IRQ_2);
- //m_acia->txd_handler().set("link", FUNC(rs232_port_device::write_txd));
- //m_acia->rts_handler().set("link", FUNC(rs232_port_device::write_rts));
+ m_acia->txd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); // loopback for now
+
+ // DE-9 port
+ // slave sends 0xca, master receives it and sends a 0x0d ACK back.
+ // writing latter to $200063 while in slave mode will pass the serial check
+ clock_device &acia_clock(CLOCK(config, "acia_clock", 20_MHz_XTAL / 64)); // assume ~19200 baud
+ acia_clock.signal_handler().set(m_acia, FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia, FUNC(acia6850_device::write_rxc));
}
void gstriker_state::twc94(machine_config &config)
diff --git a/src/mame/zaccaria/quasar.cpp b/src/mame/zaccaria/quasar.cpp
index 5727e34e7949a..fc8890f69d9f8 100644
--- a/src/mame/zaccaria/quasar.cpp
+++ b/src/mame/zaccaria/quasar.cpp
@@ -508,7 +508,7 @@ static INPUT_PORTS_START( quasar )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x30, 0x20, "Sound Program" ) PORT_DIPLOCATION("SOUND:3,4")
PORT_DIPSETTING( 0x00, "Invalid 1" )
- PORT_DIPSETTING( 0x10, "Invalid 1" )
+ PORT_DIPSETTING( 0x10, "Invalid 1" )
PORT_DIPSETTING( 0x30, "Invalid 2" )
PORT_DIPSETTING( 0x20, "Quasar" )
INPUT_PORTS_END