mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
quickpick5: split classes, fix sprite priority
This commit is contained in:
parent
a499640a26
commit
dbb9974476
@ -42,42 +42,37 @@
|
||||
|
||||
namespace {
|
||||
|
||||
class quickpick5_state : public driver_device
|
||||
class waijockey_state : public driver_device
|
||||
{
|
||||
public:
|
||||
quickpick5_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
waijockey_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_palette(*this, "palette"),
|
||||
m_k053245(*this, "k053245"),
|
||||
m_k051649(*this, "k051649"),
|
||||
m_k053252(*this, "k053252"),
|
||||
m_bank(*this, "bank"),
|
||||
m_vram_view(*this, "vram_view"),
|
||||
m_vram(*this, "vram"),
|
||||
m_ttlrom(*this, "ttl"),
|
||||
m_hopper(*this, "hopper"),
|
||||
m_k053245(*this, "k053245"),
|
||||
m_k051649(*this, "k051649"),
|
||||
m_k053252(*this, "k053252"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_oki(*this, "oki"),
|
||||
m_outport(*this, "OUT"),
|
||||
m_sio_ports(*this, "SIO%u", 1U),
|
||||
m_ttlrom_offset(0)
|
||||
m_oki(*this, "oki")
|
||||
{ }
|
||||
|
||||
void quickpick5(machine_config &config);
|
||||
void waijockey(machine_config &config);
|
||||
|
||||
int serial_io_r();
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override ATTR_COLD;
|
||||
virtual void machine_reset() override ATTR_COLD;
|
||||
virtual void video_start() override ATTR_COLD;
|
||||
|
||||
private:
|
||||
u32 screen_update_quickpick5(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
K05324X_CB_MEMBER(sprite_callback);
|
||||
TILE_GET_INFO_MEMBER(ttl_get_tile_info);
|
||||
K05324X_CB_MEMBER(sprite_callback) { *priority = ~*color >> 4 & 2; }
|
||||
virtual TILE_GET_INFO_MEMBER(ttl_get_tile_info);
|
||||
void ccu_int_time_w(u8 data);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(scanline);
|
||||
|
||||
@ -93,39 +88,66 @@ private:
|
||||
void control_w(u8 data);
|
||||
u8 ttlrom_r(offs_t offset);
|
||||
void vram_w(offs_t offset, u8 data);
|
||||
template <int N> void scrollx_w(u8 data);
|
||||
|
||||
void serial_io_w(u8 data);
|
||||
void out_w(u8 data);
|
||||
virtual void out_w(u8 data);
|
||||
|
||||
void common_map(address_map &map) ATTR_COLD;
|
||||
void quickpick5_main(address_map &map) ATTR_COLD;
|
||||
void waijockey_main(address_map &map) ATTR_COLD;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<k05324x_device> m_k053245;
|
||||
required_device<k051649_device> m_k051649;
|
||||
required_device<k053252_device> m_k053252;
|
||||
optional_memory_bank m_bank;
|
||||
required_memory_bank m_bank;
|
||||
memory_view m_vram_view;
|
||||
required_shared_ptr<u8> m_vram;
|
||||
required_region_ptr<u8> m_ttlrom;
|
||||
required_device<hopper_device> m_hopper;
|
||||
required_device<k05324x_device> m_k053245;
|
||||
required_device<k051649_device> m_k051649;
|
||||
required_device<k053252_device> m_k053252;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<okim6295_device> m_oki;
|
||||
required_ioport m_outport;
|
||||
optional_ioport_array<3> m_sio_ports;
|
||||
|
||||
int m_ttl_gfx_index;
|
||||
tilemap_t *m_ttl_tilemap;
|
||||
u8 m_control;
|
||||
int m_ttlrom_offset;
|
||||
bool m_title_hack;
|
||||
int m_ccu_int_time, m_ccu_int_time_count;
|
||||
|
||||
u16 m_sio_out, m_sio_in0, m_sio_in1;
|
||||
u8 m_sio_prev;
|
||||
int m_ttl_gfx_index = 0;
|
||||
tilemap_t *m_ttl_tilemap;
|
||||
u8 m_control = 0;
|
||||
u16 m_scrollx = 0;
|
||||
int m_ttlrom_offset = 0;
|
||||
int m_ccu_int_time = 0;
|
||||
int m_ccu_int_time_count = 0;
|
||||
};
|
||||
|
||||
class quickpick5_state : public waijockey_state
|
||||
{
|
||||
public:
|
||||
quickpick5_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
waijockey_state(mconfig, type, tag),
|
||||
m_sio_ports(*this, "SIO%u", 1U)
|
||||
{ }
|
||||
|
||||
int serial_io_r() { return BIT(m_sio_out, 0); }
|
||||
|
||||
void quickpick5(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override ATTR_COLD;
|
||||
virtual void machine_reset() override ATTR_COLD;
|
||||
|
||||
virtual TILE_GET_INFO_MEMBER(ttl_get_tile_info) override;
|
||||
virtual void out_w(u8 data) override;
|
||||
|
||||
private:
|
||||
void quickpick5_main(address_map &map) ATTR_COLD;
|
||||
|
||||
void serial_io_w(u8 data);
|
||||
|
||||
optional_ioport_array<3> m_sio_ports;
|
||||
u16 m_sio_out = 0, m_sio_in0 = 0, m_sio_in1 = 0;
|
||||
u8 m_sio_prev = 0;
|
||||
};
|
||||
|
||||
|
||||
void quickpick5_state::serial_io_w(u8 data)
|
||||
{
|
||||
// bit 7 - coin counter OUT
|
||||
@ -160,39 +182,36 @@ void quickpick5_state::serial_io_w(u8 data)
|
||||
m_sio_prev = data;
|
||||
}
|
||||
|
||||
int quickpick5_state::serial_io_r()
|
||||
{
|
||||
return BIT(m_sio_out, 0);
|
||||
}
|
||||
|
||||
void quickpick5_state::out_w(u8 data)
|
||||
void waijockey_state::out_w(u8 data)
|
||||
{
|
||||
/*
|
||||
quickpick5:
|
||||
bit 7 - patlite?
|
||||
bit 1 - hopper
|
||||
bit 0 - ~coin blocker
|
||||
|
||||
waijokey:
|
||||
bit 6 - ??? (toggle all the time)
|
||||
Bit 3 - coin counter In
|
||||
Bit 2 - lock medal
|
||||
Bit 1 - ???
|
||||
Bit 0 - hopper
|
||||
|
||||
should be split into 2 handlers later
|
||||
*/
|
||||
m_outport->write(data);
|
||||
m_hopper->motor_w(BIT(data, 0));
|
||||
}
|
||||
|
||||
void quickpick5_state::ccu_int_time_w(u8 data)
|
||||
void quickpick5_state::out_w(u8 data)
|
||||
{
|
||||
/*
|
||||
bit 7 - patlite?
|
||||
bit 1 - hopper
|
||||
bit 0 - ~coin blocker
|
||||
*/
|
||||
m_hopper->motor_w(BIT(data, 1));
|
||||
}
|
||||
|
||||
void waijockey_state::ccu_int_time_w(u8 data)
|
||||
{
|
||||
if (m_ccu_int_time != data)
|
||||
logerror("ccu_int_time rewritten with value of %02x\n", data);
|
||||
m_ccu_int_time = data;
|
||||
}
|
||||
|
||||
void quickpick5_state::control_w(u8 data)
|
||||
void waijockey_state::control_w(u8 data)
|
||||
{
|
||||
m_bank->set_entry(data & 0x1);
|
||||
if (((m_control & 0x60) != 0x60) && ((data & 0x60) == 0x60))
|
||||
@ -209,7 +228,7 @@ void quickpick5_state::control_w(u8 data)
|
||||
m_vram_view.select(0); // VRAM
|
||||
}
|
||||
|
||||
u8 quickpick5_state::ttlrom_r(offs_t offset)
|
||||
u8 waijockey_state::ttlrom_r(offs_t offset)
|
||||
{
|
||||
u8 ret = m_ttlrom[m_ttlrom_offset];
|
||||
|
||||
@ -219,13 +238,22 @@ u8 quickpick5_state::ttlrom_r(offs_t offset)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void quickpick5_state::vram_w(offs_t offset, u8 data)
|
||||
void waijockey_state::vram_w(offs_t offset, u8 data)
|
||||
{
|
||||
m_vram[offset] = data;
|
||||
m_ttl_tilemap->mark_tile_dirty(offset >> 1);
|
||||
}
|
||||
|
||||
void quickpick5_state::video_start()
|
||||
template <int N>
|
||||
void waijockey_state::scrollx_w(u8 data)
|
||||
{
|
||||
const u8 shift = N * 8;
|
||||
m_scrollx = (m_scrollx & ~(0xff << shift)) | (data << shift);
|
||||
|
||||
m_ttl_tilemap->set_scrollx(m_scrollx + 104);
|
||||
}
|
||||
|
||||
void waijockey_state::video_start()
|
||||
{
|
||||
static const gfx_layout charlayout =
|
||||
{
|
||||
@ -251,9 +279,8 @@ void quickpick5_state::video_start()
|
||||
m_gfxdecode->set_gfx(gfx_index, std::make_unique<gfx_element>(m_palette, charlayout, memregion("ttl")->base(), 0, m_palette->entries() / 16, 0));
|
||||
m_ttl_gfx_index = gfx_index;
|
||||
|
||||
m_ttl_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quickpick5_state::ttl_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
||||
m_ttl_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(waijockey_state::ttl_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
||||
m_ttl_tilemap->set_transparent_pen(0);
|
||||
m_ttl_tilemap->set_scrollx(80);
|
||||
m_ttl_tilemap->set_scrolly(28);
|
||||
|
||||
m_ttlrom_offset = 0;
|
||||
@ -261,47 +288,40 @@ void quickpick5_state::video_start()
|
||||
m_ccu_int_time = 20;
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(quickpick5_state::ttl_get_tile_info)
|
||||
TILE_GET_INFO_MEMBER(waijockey_state::ttl_get_tile_info)
|
||||
{
|
||||
int attr = m_vram[BYTE_XOR_LE((tile_index << 1) + 1)];
|
||||
int code = m_vram[BYTE_XOR_LE((tile_index << 1))] | ((attr & 0xf) << 8);
|
||||
attr = attr >> 3 & ~1;
|
||||
int attr = m_vram[tile_index << 1 | 1];
|
||||
int code = m_vram[tile_index << 1] | (attr & 0xf) << 8;
|
||||
int color = attr >> 4 & 0xf;
|
||||
|
||||
tileinfo.set(m_ttl_gfx_index, code, attr, 0);
|
||||
tileinfo.set(m_ttl_gfx_index, code, color, 0);
|
||||
}
|
||||
|
||||
u32 quickpick5_state::screen_update_quickpick5(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
TILE_GET_INFO_MEMBER(quickpick5_state::ttl_get_tile_info)
|
||||
{
|
||||
int attr = m_vram[tile_index << 1 | 1];
|
||||
int code = m_vram[tile_index << 1] | (attr & 0xf) << 8;
|
||||
int color = attr >> 3 & 0x1e;
|
||||
|
||||
tileinfo.set(m_ttl_gfx_index, code, color, 0);
|
||||
}
|
||||
|
||||
u32 waijockey_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
bitmap.fill(0, cliprect);
|
||||
screen.priority().fill(0, cliprect);
|
||||
m_title_hack = false;
|
||||
m_ttl_tilemap->draw(screen, bitmap, cliprect, 0, 1);
|
||||
m_k053245->sprites_draw(bitmap, cliprect, screen.priority());
|
||||
|
||||
if (!m_title_hack)
|
||||
{
|
||||
m_ttl_tilemap->draw(screen, bitmap, cliprect, 0, 0xff);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
K05324X_CB_MEMBER(quickpick5_state::sprite_callback)
|
||||
{
|
||||
*code = (*code & 0x7ff);
|
||||
*color = (*color & 0x003f);
|
||||
|
||||
if (*code == 0x520)
|
||||
{
|
||||
m_title_hack = true;
|
||||
}
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(quickpick5_state::scanline)
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(waijockey_state::scanline)
|
||||
{
|
||||
int scanline = param;
|
||||
|
||||
// z80 /IRQ is connected to the IRQ1(vblank) pin of k053252 CCU
|
||||
if(scanline == 255)
|
||||
if (scanline == 255)
|
||||
{
|
||||
m_maincpu->set_input_line(0, ASSERT_LINE);
|
||||
}
|
||||
@ -317,45 +337,45 @@ TIMER_DEVICE_CALLBACK_MEMBER(quickpick5_state::scanline)
|
||||
}
|
||||
}
|
||||
|
||||
void quickpick5_state::common_map(address_map &map)
|
||||
void waijockey_state::common_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x7fff).rom().region("maincpu", 0);
|
||||
map(0x8000, 0xbfff).bankr(m_bank);
|
||||
map(0xc000, 0xdbff).ram().share("nvram");
|
||||
map(0xdc00, 0xdc0f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write));
|
||||
map(0xdc40, 0xdc4f).rw(FUNC(quickpick5_state::k244_r), FUNC(quickpick5_state::k244_w));
|
||||
map(0xdc40, 0xdc4f).rw(FUNC(waijockey_state::k244_r), FUNC(waijockey_state::k244_w));
|
||||
map(0xdc80, 0xdc80).portr("DSW1");
|
||||
map(0xdc81, 0xdc81).portr("DSW2");
|
||||
map(0xdcc0, 0xdcc0).portr("IN1");
|
||||
map(0xdcc1, 0xdcc1).portr("IN2");
|
||||
map(0xdd00, 0xdd00).nopw();
|
||||
map(0xdd40, 0xdd40).portr("IN3");
|
||||
map(0xdd80, 0xdd80).w(FUNC(quickpick5_state::control_w));
|
||||
map(0xdd80, 0xdd80).w(FUNC(waijockey_state::control_w));
|
||||
map(0xde00, 0xde00).w(FUNC(waijockey_state::out_w));
|
||||
map(0xde40, 0xde40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
|
||||
map(0xe000, 0xefff).view(m_vram_view);
|
||||
m_vram_view[0](0xe000, 0xefff).ram().w(FUNC(quickpick5_state::vram_w)).share(m_vram);
|
||||
m_vram_view[0](0xe000, 0xefff).ram().w(FUNC(waijockey_state::vram_w)).share(m_vram);
|
||||
m_vram_view[1](0xe000, 0xe0ff).mirror(0x0f00).m(m_k051649, FUNC(k051649_device::scc_map));
|
||||
m_vram_view[2](0xe000, 0xe000).mirror(0x0fff).r(FUNC(quickpick5_state::ttlrom_r));
|
||||
m_vram_view[2](0xe000, 0xe000).mirror(0x0fff).r(FUNC(waijockey_state::ttlrom_r));
|
||||
|
||||
map(0xf000, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
|
||||
map(0xf800, 0xffff).rw(FUNC(quickpick5_state::k245_r), FUNC(quickpick5_state::k245_w));
|
||||
map(0xf800, 0xffff).rw(FUNC(waijockey_state::k245_r), FUNC(waijockey_state::k245_w));
|
||||
}
|
||||
|
||||
void quickpick5_state::quickpick5_main(address_map &map)
|
||||
{
|
||||
common_map(map);
|
||||
map(0xddc0, 0xddc0).w(FUNC(quickpick5_state::serial_io_w));
|
||||
map(0xde00, 0xde00).w(FUNC(quickpick5_state::out_w));
|
||||
}
|
||||
|
||||
void quickpick5_state::waijockey_main(address_map &map)
|
||||
void waijockey_state::waijockey_main(address_map &map)
|
||||
{
|
||||
common_map(map);
|
||||
map(0xdd41, 0xdd41).nopr(); // DSW3?
|
||||
map(0xddc0, 0xddc0).nopw(); // bit 6 - coin counter OUT
|
||||
map(0xde00, 0xde00).w(FUNC(quickpick5_state::out_w));
|
||||
//map(0xde80, 0xdfff).nopw();
|
||||
map(0xde80, 0xde80).w(FUNC(waijockey_state::scrollx_w<0>));
|
||||
map(0xdec0, 0xdec0).w(FUNC(waijockey_state::scrollx_w<1>));
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( quickpick5 )
|
||||
@ -463,9 +483,6 @@ static INPUT_PORTS_START( quickpick5 )
|
||||
PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_GAMBLE_D_UP)
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_START1)
|
||||
PORT_BIT(0x500, IP_ACTIVE_HIGH, IPT_UNKNOWN)
|
||||
|
||||
PORT_START("OUT")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("hopper", FUNC(hopper_device::motor_w))
|
||||
INPUT_PORTS_END
|
||||
|
||||
// Control panel buttons layout:
|
||||
@ -530,25 +547,29 @@ static INPUT_PORTS_START( waijockey )
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x60, IP_ACTIVE_LOW, IPT_UNUSED) // battery sensor
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_VBLANK("screen") // guess
|
||||
|
||||
PORT_START("OUT")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("hopper", FUNC(hopper_device::motor_w))
|
||||
INPUT_PORTS_END
|
||||
|
||||
void quickpick5_state::machine_start()
|
||||
void waijockey_state::machine_start()
|
||||
{
|
||||
m_bank->configure_entries(0, 0x2, memregion("maincpu")->base()+0x8000, 0x4000);
|
||||
|
||||
save_item(NAME(m_control));
|
||||
save_item(NAME(m_scrollx));
|
||||
save_item(NAME(m_ccu_int_time));
|
||||
save_item(NAME(m_ccu_int_time_count));
|
||||
}
|
||||
|
||||
void quickpick5_state::machine_start()
|
||||
{
|
||||
waijockey_state::machine_start();
|
||||
|
||||
save_item(NAME(m_sio_out));
|
||||
save_item(NAME(m_sio_in0));
|
||||
save_item(NAME(m_sio_in1));
|
||||
save_item(NAME(m_sio_prev));
|
||||
}
|
||||
|
||||
void quickpick5_state::machine_reset()
|
||||
void waijockey_state::machine_reset()
|
||||
{
|
||||
m_bank->set_entry(0);
|
||||
m_vram_view.select(0);
|
||||
@ -556,45 +577,55 @@ void quickpick5_state::machine_reset()
|
||||
m_control = 0;
|
||||
m_ccu_int_time = 0;
|
||||
m_ccu_int_time_count = 0;
|
||||
m_sio_out = m_sio_in0 = m_sio_in1 = 0;
|
||||
m_sio_prev = 0;
|
||||
}
|
||||
|
||||
void quickpick5_state::quickpick5(machine_config &config)
|
||||
void quickpick5_state::machine_reset()
|
||||
{
|
||||
/* basic machine hardware */
|
||||
waijockey_state::machine_reset();
|
||||
|
||||
m_sio_out = m_sio_in0 = m_sio_in1 = 0;
|
||||
m_sio_prev = 0;
|
||||
|
||||
m_ttl_tilemap->set_scrollx(80);
|
||||
}
|
||||
|
||||
void waijockey_state::waijockey(machine_config &config)
|
||||
{
|
||||
// basic machine hardware
|
||||
Z80(config, m_maincpu, XTAL(32'000'000)/4); // z84c0008pec 8mhz part, 32Mhz xtal verified on PCB, divisor unknown
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &quickpick5_state::quickpick5_main);
|
||||
TIMER(config, "scantimer").configure_scanline(FUNC(quickpick5_state::scanline), "screen", 0, 1);
|
||||
HOPPER(config, "hopper", attotime::from_msec(100));
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &waijockey_state::waijockey_main);
|
||||
TIMER(config, "scantimer").configure_scanline(FUNC(waijockey_state::scanline), "screen", 0, 1);
|
||||
|
||||
K053252(config, m_k053252, XTAL(32'000'000)/4); /* K053252, xtal verified, divider not verified */
|
||||
m_k053252->int1_ack().set(FUNC(quickpick5_state::vbl_ack_w));
|
||||
m_k053252->int2_ack().set(FUNC(quickpick5_state::nmi_ack_w));
|
||||
m_k053252->int_time().set(FUNC(quickpick5_state::ccu_int_time_w));
|
||||
K053252(config, m_k053252, XTAL(32'000'000)/4); // K053252, xtal verified, divider not verified
|
||||
m_k053252->int1_ack().set(FUNC(waijockey_state::vbl_ack_w));
|
||||
m_k053252->int2_ack().set(FUNC(waijockey_state::nmi_ack_w));
|
||||
m_k053252->int_time().set(FUNC(waijockey_state::ccu_int_time_w));
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_refresh_hz(59.62);
|
||||
screen.set_vblank_time(ATTOSECONDS_IN_USEC(20));
|
||||
screen.set_size(64*8, 33*8);
|
||||
screen.set_visarea(88, 456-1, 28, 256-1);
|
||||
screen.set_screen_update(FUNC(quickpick5_state::screen_update_quickpick5));
|
||||
screen.set_palette(m_palette);
|
||||
HOPPER(config, m_hopper, attotime::from_msec(100));
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
// video hardware
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_refresh_hz(61.04);
|
||||
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(20));
|
||||
m_screen->set_size(64*8, 33*8);
|
||||
m_screen->set_visarea(0, 400-1, 0, 226-1);
|
||||
m_screen->set_visarea_full();
|
||||
m_screen->set_screen_update(FUNC(waijockey_state::screen_update));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 1024);
|
||||
m_palette->enable_shadows();
|
||||
|
||||
K053245(config, m_k053245, 0);
|
||||
m_k053245->set_palette(m_palette);
|
||||
m_k053245->set_offsets(-(44+80), 20);
|
||||
m_k053245->set_sprite_callback(FUNC(quickpick5_state::sprite_callback));
|
||||
m_k053245->set_offsets(-96, 16);
|
||||
m_k053245->set_sprite_callback(FUNC(waijockey_state::sprite_callback));
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode_device::empty);
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
/* sound hardware */
|
||||
// sound hardware
|
||||
SPEAKER(config, "mono").front_center();
|
||||
K051649(config, m_k051649, XTAL(32'000'000)/9); // xtal is verified, divider is not
|
||||
m_k051649->add_route(ALL_OUTPUTS, "mono", 0.45);
|
||||
@ -603,10 +634,13 @@ void quickpick5_state::quickpick5(machine_config &config)
|
||||
m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
void quickpick5_state::waijockey(machine_config &config)
|
||||
void quickpick5_state::quickpick5(machine_config &config)
|
||||
{
|
||||
quickpick5(config);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &quickpick5_state::waijockey_main);
|
||||
waijockey(config);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &quickpick5_state::quickpick5_main);
|
||||
|
||||
m_k053245->set_offsets(-(44+80), 20);
|
||||
m_screen->set_visarea(0, 384-1, 0, 232-1);
|
||||
}
|
||||
|
||||
|
||||
@ -653,5 +687,5 @@ ROM_END
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
GAME( 1991, quickp5, 0, quickpick5, quickpick5, quickpick5_state, empty_init, ROT0, "Konami", "Quick Pick 5", MACHINE_IMPERFECT_GRAPHICS)
|
||||
GAME( 1993, waijockey, 0, waijockey, waijockey, quickpick5_state, empty_init, ROT0, "Konami", "Wai Wai Jockey", MACHINE_NOT_WORKING) // works but not playable due to bad gfx
|
||||
GAME( 1991, quickp5, 0, quickpick5, quickpick5, quickpick5_state, empty_init, ROT0, "Konami", "Quick Pick 5", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS)
|
||||
GAME( 1993, waijockey, 0, waijockey, waijockey, waijockey_state, empty_init, ROT0, "Konami", "Wai Wai Jockey", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING) // problem with nvram
|
||||
|
@ -1328,11 +1328,11 @@ namespace
|
||||
#define C352DIV (288)
|
||||
|
||||
#define PIXEL_CLOCK (51.2_MHz_XTAL/4*2)
|
||||
|
||||
|
||||
#define HTOTAL (814)
|
||||
#define HBEND (0)
|
||||
#define HBSTART (640)
|
||||
|
||||
|
||||
#define VTOTAL (525)
|
||||
#define VBEND (0)
|
||||
#define VBSTART (480)
|
||||
|
Loading…
Reference in New Issue
Block a user