summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author David Haywood <28625134+DavidHaywood@users.noreply.github.com>2021-09-12 16:02:51 +0100
committer GitHub <noreply@github.com>2021-09-12 11:02:51 -0400
commitda0df4bb6c54d7077491a6b8d73892a99c46b6bf (patch)
treede3ab34ea7ffbba85ce23d8e53bd59cc1288d712
parentaf65adbdd602abb61b03529995009eca9960248d (diff)
konmedal68k.cpp : konslot / konslot2 - fixed display resolution and offsets [David Haywood] (#8525)
-rw-r--r--src/mame/drivers/konmedal68k.cpp303
-rw-r--r--src/mame/mame.lst6
2 files changed, 260 insertions, 49 deletions
diff --git a/src/mame/drivers/konmedal68k.cpp b/src/mame/drivers/konmedal68k.cpp
index 0e7fb65d274..c3f0d9a6795 100644
--- a/src/mame/drivers/konmedal68k.cpp
+++ b/src/mame/drivers/konmedal68k.cpp
@@ -46,13 +46,14 @@ public:
m_maincpu(*this, "maincpu"),
m_k056832(*this, "k056832"),
m_k055555(*this, "k055555"),
+ m_screen(*this, "screen"),
m_palette(*this, "palette"),
- m_ymz(*this, "ymz")
+ m_ymz(*this, "ymz"),
+ m_vbl_scanline(240)
{ }
void kzaurus(machine_config &config);
void koropens(machine_config &config);
- void slot(machine_config &config);
void spcpokan(machine_config &config);
void gs662(machine_config &config);
@@ -61,9 +62,32 @@ protected:
virtual void machine_reset() override;
virtual void video_start() override;
+ void common_main(address_map &map);
+
+ uint16_t vrom_r(offs_t offset)
+ {
+ if (m_control2 & 0x10)
+ {
+ offset |= 0x1000;
+ }
+
+ return m_k056832->piratesh_rom_r(offset);
+ }
+
+ virtual void tilemap_draw(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, int i);
+
+ required_device<cpu_device> m_maincpu;
+ required_device<k056832_device> m_k056832;
+ required_device<k055555_device> m_k055555;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+ required_device<ymz280b_device> m_ymz;
+
+ int m_vbl_scanline;
+
private:
- uint32_t screen_update_konmedal68k(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void fill_backcolor(bitmap_ind16 &bitmap, const rectangle &cliprect, int pen_idx, int mode);
+ uint32_t screen_update_konmedal68k(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ void fill_backcolor(bitmap_rgb32 &bitmap, const rectangle &cliprect, int pen_idx, int mode);
K056832_CB_MEMBER(tile_callback);
TIMER_DEVICE_CALLBACK_MEMBER(scanline);
@@ -84,15 +108,6 @@ private:
}
void control2_w(uint16_t data) { m_control2 = data & 0xff; }
- uint16_t vrom_r(offs_t offset)
- {
- if (m_control2 & 0x10)
- {
- offset |= 0x1000;
- }
-
- return m_k056832->piratesh_rom_r(offset);
- }
uint16_t vrom_spcpokan_r(offs_t offset)
{
@@ -117,43 +132,65 @@ private:
return m_k056832->rom_word_r(offset);
}
- void common_main(address_map &map);
void kzaurus_main(address_map &map);
void koropens_main(address_map &map);
- void slot_main(address_map &map);
void spcpokan_main(address_map &map);
void gs662_main(address_map &map);
static constexpr int NUM_LAYERS = 4;
- required_device<cpu_device> m_maincpu;
- required_device<k056832_device> m_k056832;
- required_device<k055555_device> m_k055555;
- required_device<palette_device> m_palette;
- required_device<ymz280b_device> m_ymz;
u8 m_control, m_control2;
};
+class konmedal68k_slot_state : public konmedal68k_state
+{
+public:
+ konmedal68k_slot_state(const machine_config &mconfig, device_type type, const char *tag) :
+ konmedal68k_state(mconfig, type, tag)
+ { }
+
+ void slot(machine_config &config);
+
+protected:
+ virtual void video_start() override;
+
+ virtual void tilemap_draw(screen_device& screen, bitmap_rgb32& bitmap, const rectangle& cliprect, int layer, int i) override;
+
+private:
+ void slot_main(address_map &map);
+};
+
void konmedal68k_state::video_start()
{
m_k056832->set_layer_offs(0, -4, -8); // title on title screen
m_k056832->set_layer_offs(1, 12, 8); // konami logo on title screen
m_k056832->set_layer_offs(2, 6, -8);
m_k056832->set_layer_offs(3, 6, -8);
+ m_vbl_scanline = 240;
}
+void konmedal68k_slot_state::video_start()
+{
+ m_k056832->set_layer_offs(0, 0, -11);
+ m_k056832->set_layer_offs(1, 2, -11); // overlay for moving parts
+ m_k056832->set_layer_offs(2, 4, -11); // main layer?
+ m_k056832->set_layer_offs(3, 6, -11);
+ m_vbl_scanline = 480;
+}
+
+
TIMER_DEVICE_CALLBACK_MEMBER(konmedal68k_state::scanline)
{
int scanline = param;
- if ((scanline == 240) && (m_control & 0x8))
+ if ((scanline == m_vbl_scanline) && (m_control & 0x8))
{
m_maincpu->set_input_line(M68K_IRQ_3, ASSERT_LINE);
}
- if ((scanline == 255) && (m_control & 0x10))
+ if ((scanline == m_vbl_scanline+15) && (m_control & 0x10))
{
m_maincpu->set_input_line(M68K_IRQ_4, ASSERT_LINE);
}
@@ -164,7 +201,7 @@ K056832_CB_MEMBER(konmedal68k_state::tile_callback)
}
// modified from version in mame/video/k054338.cpp
-void konmedal68k_state::fill_backcolor(bitmap_ind16 &bitmap, const rectangle &cliprect, int pen_idx, int mode)
+void konmedal68k_state::fill_backcolor(bitmap_rgb32 &bitmap, const rectangle &cliprect, int pen_idx, int mode)
{
if ((mode & 0x02) == 0) // solid fill
{
@@ -172,8 +209,9 @@ void konmedal68k_state::fill_backcolor(bitmap_ind16 &bitmap, const rectangle &cl
}
else
{
- uint16_t *dst_ptr = &bitmap.pix(cliprect.min_y);
+ uint32_t *dst_ptr = &bitmap.pix(cliprect.min_y);
int const dst_pitch = bitmap.rowpixels();
+ pen_t const *const paldata = m_palette->pens();
if ((mode & 0x01) == 0) // vertical gradient fill
{
@@ -182,7 +220,7 @@ void konmedal68k_state::fill_backcolor(bitmap_ind16 &bitmap, const rectangle &cl
{
for(int x = cliprect.min_x; x <= cliprect.max_x; x++)
{
- dst_ptr[x] = pen_idx;
+ dst_ptr[x] = paldata[pen_idx];
}
pen_idx++;
@@ -197,7 +235,7 @@ void konmedal68k_state::fill_backcolor(bitmap_ind16 &bitmap, const rectangle &cl
{
for(int x = cliprect.min_x; x <= cliprect.max_x; x++)
{
- dst_ptr[x] = pen_idx;
+ dst_ptr[x] = paldata[pen_idx];
}
dst_ptr += dst_pitch;
}
@@ -205,7 +243,18 @@ void konmedal68k_state::fill_backcolor(bitmap_ind16 &bitmap, const rectangle &cl
}
}
-uint32_t konmedal68k_state::screen_update_konmedal68k(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+void konmedal68k_state::tilemap_draw(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, int i)
+{
+ m_k056832->tilemap_draw(screen, bitmap, cliprect, layer, 0, 1 << i);
+}
+
+void konmedal68k_slot_state::tilemap_draw(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, int i)
+{
+ m_k056832->tilemap_draw_dj(screen, bitmap, cliprect, layer, 0, 1 << i);
+}
+
+
+uint32_t konmedal68k_state::screen_update_konmedal68k(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
static const int order[4] = { 3, 2, 0, 1 };
int enables = m_k055555->K055555_read_register(K55_INPUT_ENABLES);
@@ -220,7 +269,7 @@ uint32_t konmedal68k_state::screen_update_konmedal68k(screen_device &screen, bit
if (enables & (K55_INP_VRAM_A << layer))
{
- m_k056832->tilemap_draw(screen, bitmap, cliprect, layer, 0, 1 << i);
+ tilemap_draw(screen, bitmap, cliprect, layer, 1 << i);
}
}
@@ -267,14 +316,19 @@ void konmedal68k_state::koropens_main(address_map &map)
map(0xc00000, 0xc01fff).r(FUNC(konmedal68k_state::vrom_koropens_r));
}
-void konmedal68k_state::slot_main(address_map &map)
+void konmedal68k_slot_state::slot_main(address_map &map)
{
common_main(map);
+
+ // 900000 region more per-game I/O?
+
map(0xb00000, 0xb03fff).ram().lrw16(
NAME([this](offs_t offset) -> u16 { return (offset & 1) ? m_palette->read16(offset / 2) : 0; }),
NAME([this](offs_t offset, u16 data) { if (offset & 1) m_palette->write16(offset / 2, data); })
).share("palette");
- map(0xc00000, 0xc01fff).r(FUNC(konmedal68k_state::vrom_r));
+ map(0xb04000, 0xb0ffff).ram();
+
+ map(0xc00000, 0xc01fff).r(FUNC(konmedal68k_slot_state::vrom_r));
}
void konmedal68k_state::gs662_main(address_map &map)
@@ -367,6 +421,160 @@ static INPUT_PORTS_START( kzaurus )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
INPUT_PORTS_END
+static INPUT_PORTS_START( crossmg2 )
+ PORT_START("IN0")
+ PORT_DIPNAME( 0x0001, 0x0001, "IN0")
+ PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+
+ PORT_START("IN1")
+ PORT_DIPNAME( 0x0001, 0x0000, "IN1")
+ PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+
+ PORT_START("OUT")
+ //PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("hopper", hopper_device, motor_w)
+
+ PORT_START("DSW")
+ PORT_DIPNAME( 0x0001, 0x0000, "DSW" )
+ PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
void konmedal68k_state::machine_start()
{
save_item(NAME(m_control));
@@ -388,13 +596,12 @@ void konmedal68k_state::kzaurus(machine_config &config)
HOPPER(config, "hopper", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.62); /* verified on pcb */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(40, 400-1, 16, 240-1);
- screen.set_screen_update(FUNC(konmedal68k_state::screen_update_konmedal68k));
- screen.set_palette("palette");
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(59.62); /* verified on pcb */
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ m_screen->set_size(64*8, 32*8);
+ m_screen->set_visarea(40, 400-1, 16, 240-1);
+ m_screen->set_screen_update(FUNC(konmedal68k_state::screen_update_konmedal68k));
PALETTE(config, "palette").set_format(palette_device::xBGR_888, 8192).enable_shadows();
@@ -410,8 +617,8 @@ void konmedal68k_state::kzaurus(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
YMZ280B(config, m_ymz, XTAL(33'868'800)/2); // 33.8688 MHz xtal verified on PCB
- m_ymz->add_route(0, "lspeaker", 1.0);
- m_ymz->add_route(1, "rspeaker", 1.0);
+ m_ymz->add_route(0, "lspeaker", 0.75);
+ m_ymz->add_route(1, "rspeaker", 0.75);
}
void konmedal68k_state::koropens(machine_config &config)
@@ -444,19 +651,21 @@ void konmedal68k_state::gs662(machine_config &config)
screen.set_size(64 * 8, 32 * 8);
screen.set_visarea(0, 360 - 1, 16, 240 - 1);
screen.set_screen_update(FUNC(konmedal68k_state::screen_update_konmedal68k));
- screen.set_palette("palette");
PALETTE(config.replace(), "palette").set_format(palette_device::xBGR_888, 32768).enable_shadows();
}
-void konmedal68k_state::slot(machine_config &config)
+void konmedal68k_slot_state::slot(machine_config &config)
{
kzaurus(config);
M68000(config.replace(), m_maincpu, XTAL(33'868'800) / 4); // 33.8688 MHz crystal verified on PCB
- m_maincpu->set_addrmap(AS_PROGRAM, &konmedal68k_state::slot_main);
+ m_maincpu->set_addrmap(AS_PROGRAM, &konmedal68k_slot_state::slot_main);
PALETTE(config.replace(), "palette").set_format(palette_device::xBGR_444, 4096).enable_shadows();
+
+ m_screen->set_size(64*8, 64*8);
+ m_screen->set_visarea(40, 360-1, 16, 62*8-1);
}
ROM_START( kzaurus )
@@ -567,7 +776,7 @@ ROM_END
// GS562 PCB with no K056766 color DAC and no IC 20D 8Kbyte SRAM (palette RAM?), possible have no video output or have it implemented in some unusual way.
// at 1st boot press Service1 to initialise NVRAM
-ROM_START( konslot ) // Possibly Cross Magic Mark 2 (1996)
+ROM_START( crossmg2 )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "669-a05-2n.bin", 0x000000, 0x080000, CRC(3330848e) SHA1(24c2ac03fe5d099659081d1f9611c707c746c768) )
@@ -578,7 +787,7 @@ ROM_START( konslot ) // Possibly Cross Magic Mark 2 (1996)
ROM_LOAD( "669-a01-2d.bin", 0x000000, 0x080000, CRC(08438dad) SHA1(b4ef8fc37deca5b6537cc581fc99968c86e6ec2c) )
ROM_END
-ROM_START( konslot2 ) // Possibly Fruit Magic (1996)
+ROM_START( fruitsmg )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "660-a05.2n", 0x000000, 0x080000, CRC(d7460250) SHA1(490588181b3b558e03752f4c6cbdadb807b990b3) )
@@ -595,11 +804,13 @@ ROM_END
GAME( 1995, kzaurus, 0, kzaurus, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "Pittanko Zaurus", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, dobouchn, 0, kzaurus, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "Dobou-Chan (ver JAA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 199?, konslot, 0, slot, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "unknown Konami slot medal game (set 1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 199?, konslot2, 0, slot, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "unknown Konami slot medal game (set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, unkkonmd, 0, gs662, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "unknown Konami medal game (game code GS662)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS)
GAME( 1997, koropens, 0, koropens, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "Korokoro Pensuke", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1998, kattobas, 0, koropens, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "Kattobase Power Pro Kun", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1999, pwrchanc, 0, koropens, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "Powerful Chance", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1999, ymcapsul, 0, kzaurus, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "Yu-Gi-Oh Monster Capsule", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1999, spcpokan, 0, spcpokan, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "Space Pokan", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS)
+
+// Higher resolution display. These are Pachinko / Pachislot machines, will require simulation of mechanical parts / ball sensors.
+GAME( 1996, crossmg2, 0, slot, crossmg2, konmedal68k_slot_state, empty_init, ROT0, "Konami", "Cross Magic Mark 2", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_MECHANICAL )
+GAME( 1996, fruitsmg, 0, slot, crossmg2, konmedal68k_slot_state, empty_init, ROT0, "Konami", "Fruits Magic - The Magic Party", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_MECHANICAL )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 44eb294c9eb..cd2223df046 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -19424,16 +19424,16 @@ tsupenta
tsururin
@source:konmedal68k.cpp
+crossmg2
dobouchn
+fruitsmg
kattobas
-konslot
-konslot2
koropens
kzaurus
pwrchanc
-ymcapsul
spcpokan
unkkonmd
+ymcapsul
@source:quickpick5.cpp
quickp5