Miscellaneous fixup:

* video/i82730.cpp: Fixed misguided "fix" that broke category-based
  logging.
* bus/macpds, bus/nubus: Eliminated use of simple_list.
* konami/k053246_k053247_k055673.cpp: Moved assert to work around
  Konami GX games failing to start - the code is still dodgy.
This commit is contained in:
Vas Crabb 2023-02-04 18:40:59 +11:00
parent 74b6c17f18
commit 0b67aa20c7
6 changed files with 65 additions and 58 deletions

View File

@ -72,6 +72,12 @@ macpds_device::macpds_device(const machine_config &mconfig, device_type type, co
m_maincpu(*this, finder_base::DUMMY_TAG)
{
}
macpds_device::~macpds_device()
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@ -88,9 +94,9 @@ void macpds_device::device_reset()
{
}
void macpds_device::add_macpds_card(device_macpds_card_interface *card)
void macpds_device::add_macpds_card(device_macpds_card_interface &card)
{
m_device_list.append(*card);
m_device_list.emplace_back(card);
}
template<typename R, typename W> void macpds_device::install_device(offs_t start, offs_t end, R rhandler, W whandler, uint32_t mask)
@ -132,9 +138,10 @@ void macpds_device::set_irq_line(int line, int state)
// device_macpds_card_interface - constructor
//-------------------------------------------------
device_macpds_card_interface::device_macpds_card_interface(const machine_config &mconfig, device_t &device)
: device_interface(device, "macpds"),
m_macpds(nullptr), m_macpds_slot(nullptr), m_next(nullptr)
device_macpds_card_interface::device_macpds_card_interface(const machine_config &mconfig, device_t &device) :
device_interface(device, "macpds"),
m_macpds(nullptr),
m_macpds_slot(nullptr)
{
}
@ -149,7 +156,7 @@ device_macpds_card_interface::~device_macpds_card_interface()
void device_macpds_card_interface::set_macpds_device()
{
m_macpds->add_macpds_card(this);
m_macpds->add_macpds_card(*this);
}
void device_macpds_card_interface::install_bank(offs_t start, offs_t end, uint8_t *data)

View File

@ -13,6 +13,10 @@
#pragma once
#include <functional>
#include <utility>
#include <vector>
//**************************************************************************
// TYPE DEFINITIONS
@ -68,14 +72,14 @@ public:
}
macpds_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~macpds_device();
~macpds_device() { m_device_list.detach_all(); }
// inline configuration
template <typename T>
void set_cputag(T &&tag) { m_maincpu.set_tag(std::forward<T>(tag)); }
void add_macpds_card(device_macpds_card_interface *card);
void add_macpds_card(device_macpds_card_interface &card);
template<typename R, typename W> void install_device(offs_t start, offs_t end, R rhandler, W whandler, uint32_t mask=0xffffffff);
void install_bank(offs_t start, offs_t end, uint8_t *data);
void set_irq_line(int line, int state);
@ -90,7 +94,7 @@ protected:
// internal state
required_device<cpu_device> m_maincpu;
simple_list<device_macpds_card_interface> m_device_list;
std::vector<std::reference_wrapper<device_macpds_card_interface> > m_device_list;
};
@ -103,13 +107,10 @@ DECLARE_DEVICE_TYPE(MACPDS, macpds_device)
class device_macpds_card_interface : public device_interface
{
friend class macpds_device;
template <class ElememtType> friend class simple_list;
public:
// construction/destruction
virtual ~device_macpds_card_interface();
device_macpds_card_interface *next() const { return m_next; }
void set_macpds_device();
// helper functions for card devices
@ -124,9 +125,6 @@ protected:
macpds_device *m_macpds;
macpds_slot_device *m_macpds_slot;
private:
device_macpds_card_interface *m_next;
};
#endif // MAME_BUS_MACPDS_MACPDS_H

View File

@ -53,7 +53,7 @@ void nubus_slot_device::device_resolve_objects()
if (dev)
{
dev->set_nubus_tag(m_nubus.target(), m_nubus_slottag);
m_nubus->add_nubus_card(dev);
m_nubus->add_nubus_card(*dev);
}
}
@ -96,6 +96,10 @@ nubus_device::nubus_device(const machine_config &mconfig, device_type type, cons
{
}
nubus_device::~nubus_device()
{
}
//-------------------------------------------------
// device_resolve_objects - resolve objects that
// may be needed for other devices to set
@ -121,9 +125,9 @@ void nubus_device::device_start()
{
}
void nubus_device::add_nubus_card(device_nubus_card_interface *card)
void nubus_device::add_nubus_card(device_nubus_card_interface &card)
{
m_device_list.append(*card);
m_device_list.emplace_back(card);
}
template <typename R, typename W>
@ -262,10 +266,11 @@ WRITE_LINE_MEMBER( nubus_device::irqe_w ) { m_out_irqe_cb(state); }
// device_nubus_card_interface - constructor
//-------------------------------------------------
device_nubus_card_interface::device_nubus_card_interface(const machine_config &mconfig, device_t &device)
: device_interface(device, "nubus"),
m_nubus(nullptr),
m_nubus_slottag(nullptr), m_slot(0), m_next(nullptr)
device_nubus_card_interface::device_nubus_card_interface(const machine_config &mconfig, device_t &device) :
device_interface(device, "nubus"),
m_nubus(nullptr),
m_nubus_slottag(nullptr),
m_slot(0)
{
}

View File

@ -13,6 +13,10 @@
#pragma once
#include <functional>
#include <utility>
#include <vector>
//**************************************************************************
// TYPE DEFINITIONS
@ -26,13 +30,10 @@ class nubus_device;
class device_nubus_card_interface : public device_interface
{
friend class nubus_device;
template <class ElementType> friend class simple_list;
public:
// construction/destruction
virtual ~device_nubus_card_interface();
device_nubus_card_interface *next() const { return m_next; }
void set_nubus_device();
// helper functions for card devices
@ -61,7 +62,6 @@ private:
const char *m_nubus_slottag;
int m_slot;
std::vector<uint8_t> m_declaration_rom;
device_nubus_card_interface *m_next;
};
class nubus_slot_device : public device_t, public device_single_card_slot_interface<device_nubus_card_interface>
@ -111,7 +111,7 @@ class nubus_device : public device_t
public:
// construction/destruction
nubus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~nubus_device() { m_device_list.detach_all(); }
~nubus_device();
// inline configuration
template <typename T> void set_space(T &&tag, int spacenum) { m_space.set_tag(std::forward<T>(tag), spacenum); }
@ -122,7 +122,7 @@ public:
auto out_irqd_callback() { return m_out_irqd_cb.bind(); }
auto out_irqe_callback() { return m_out_irqe_cb.bind(); }
void add_nubus_card(device_nubus_card_interface *card);
void add_nubus_card(device_nubus_card_interface &card);
template <typename R, typename W> void install_device(offs_t start, offs_t end, R rhandler, W whandler, uint32_t mask=0xffffffff);
template <typename R> void install_readonly_device(offs_t start, offs_t end, R rhandler, uint32_t mask=0xffffffff);
template <typename W> void install_writeonly_device(offs_t start, offs_t end, W whandler, uint32_t mask=0xffffffff);
@ -154,7 +154,7 @@ protected:
devcb_write_line m_out_irqd_cb;
devcb_write_line m_out_irqe_cb;
simple_list<device_nubus_card_interface> m_device_list;
std::vector<std::reference_wrapper<device_nubus_card_interface> > m_device_list;
};
inline void device_nubus_card_interface::raise_slot_irq()

View File

@ -13,11 +13,10 @@
#include "screen.h"
#define LOG_GENERAL (1U << 0)
#define LOG_COMMANDS (1U << 1)
#define LOG_DATASTREAM (1U << 2)
//#define VERBOSE (LOG_GENERAL | LOG_COMMANDS | LOG_DATASTREAM)
#define VERBOSE (0 != (LOG_GENERAL))
#define VERBOSE (LOG_GENERAL)
#include "logmacro.h"
@ -269,16 +268,17 @@ void i82730_device::mode_set()
m_mode_set = true;
// output some debug info
if (VERBOSE)
{
logerror("%s('%s'): ---- modeset ----\n", shortname(), basetag());
logerror("%s('%s'): dma burst length %02x, space %02x\n", shortname(), basetag(), m_mb.burst_length, m_mb.burst_space);
logerror("%s('%s'): margin %02x, lpr %02x\n", shortname(), basetag(), m_mb.scroll_margin, m_mb.lpr);
logerror("%s('%s'): hsyncstp: %02x, line_length: %02x, hfldstrt: %02x, hbrdstart: %02x, hfldstop: %02x, hbrdstop: %02x\n",
shortname(), basetag(), m_mb.hsyncstp, m_mb.line_length, m_mb.hfldstrt, m_mb.hbrdstrt, m_mb.hfldstp, m_mb.hbrdstp);
logerror("%s('%s'): frame_length %04x, vsyncstp: %04x, vfldstrt: %04x, vfldstp: %04x\n",
shortname(), basetag(), m_mb.frame_length, m_mb.vsyncstp, m_mb.vfldstrt, m_mb.vfldstp);
}
LOG(
"%s: ---- modeset ----\n"
" dma burst length %02x, space %02x\n"
" margin %02x, lpr %02x\n"
" hsyncstp: %02x, line_length: %02x, hfldstrt: %02x, hbrdstart: %02x, hfldstop: %02x, hbrdstop: %02x\n"
" frame_length %04x, vsyncstp: %04x, vfldstrt: %04x, vfldstp: %04x\n",
shortname(),
m_mb.burst_length, m_mb.burst_space,
m_mb.scroll_margin, m_mb.lpr,
m_mb.hsyncstp, m_mb.line_length, m_mb.hfldstrt, m_mb.hbrdstrt, m_mb.hfldstp, m_mb.hbrdstp,
m_mb.frame_length, m_mb.vsyncstp, m_mb.vfldstrt, m_mb.vfldstp);
}
void i82730_device::execute_command()
@ -814,15 +814,16 @@ WRITE_LINE_MEMBER( i82730_device::ca_w )
m_initialized = true;
// output some debug info
if (VERBOSE)
{
logerror("%s('%s'): ---- initializing ----\n", shortname(), basetag());
logerror("%s('%s'): %s system bus\n", shortname(), basetag(), sysbus_16bit() ? "16-bit" : "8-bit");
logerror("%s('%s'): intermediate block pointer: %08x\n", shortname(), basetag(), m_ibp);
logerror("%s('%s'): addrbus: %s, clno: %d, clpos: %d, mode: %s, dtw16: %s, srdy: %s\n", shortname(), basetag(),
BIT(scb, 0) ? "32-bit" : "16-bit", (scb >> 1) & 0x03, (scb >> 3) & 0x03,
BIT(scb, 5) ? "master" : "slave", BIT(scb, 6) ? "16-bit" : "8-bit", BIT(scb, 7) ? "synchronous" : "asynchronous");
}
LOG(
"%s: ---- initializing ----\n"
" %s-bit system bus\n"
" intermediate block pointer: %08x\n"
" addrbus: %s-bit, clno: %d, clpos: %d, mode: %s, dtw16: %s-bit, srdy: %s\n",
shortname(),
sysbus_16bit() ? "16" : "8",
m_ibp,
BIT(scb, 0) ? "32" : "16", BIT(scb, 1, 2), BIT(scb, 3, 2),
BIT(scb, 5) ? "master" : "slave", BIT(scb, 6) ? "16" : "8", BIT(scb, 7) ? "synchronous" : "asynchronous");
}
attention();

View File

@ -201,10 +201,12 @@ u8 k053247_device::k053246_r(offs_t offset)
{
if (m_objcha_line == ASSERT_LINE)
{
int addr;
int addr = (m_kx46_regs[6] << 17) | (m_kx46_regs[7] << 9) | (m_kx46_regs[4] << 1) | ((offset & 1) ^ 1);
addr = (m_kx46_regs[6] << 17) | (m_kx46_regs[7] << 9) | (m_kx46_regs[4] << 1) | ((offset & 1) ^ 1);
// assumes it can make an address mask with m_gfxrom.length() - 1
assert(!(m_gfxrom.length() & (m_gfxrom.length() - 1)));
addr &= m_gfxrom.length() - 1;
return m_gfxrom[addr];
}
else
@ -899,9 +901,6 @@ k055673_device::k055673_device(const machine_config &mconfig, const char *tag, d
void k055673_device::device_start()
{
// assumes it can make an address mask with m_gfxrom.length() - 1
assert(!(m_gfxrom.length() & (m_gfxrom.length() - 1)));
if (!palette().device().started())
throw device_missing_dependencies();
@ -1068,9 +1067,6 @@ k053247_device::k053247_device(const machine_config &mconfig, device_type type,
void k053247_device::device_start()
{
// assumes it can make an address mask with m_gfxrom.length() - 1
assert(!(m_gfxrom.length() & (m_gfxrom.length() - 1)));
if (!palette().device().started())
throw device_missing_dependencies();