mirror of
https://github.com/holub/mame
synced 2025-07-05 01:48:29 +03:00
tc0150rod: updated to use inline configs. nw.
This commit is contained in:
parent
6513c5b67e
commit
9c8533cfcf
@ -2994,8 +2994,6 @@ static const tc0480scp_interface taitoz_tc0480scp_intf =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static const tc0150rod_interface taitoz_tc0150rod_intf = { "gfx3" };
|
|
||||||
|
|
||||||
/***********************************************************
|
/***********************************************************
|
||||||
SAVE STATES
|
SAVE STATES
|
||||||
***********************************************************/
|
***********************************************************/
|
||||||
@ -3081,7 +3079,9 @@ static MACHINE_CONFIG_START( contcirc, taitoz_state )
|
|||||||
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
||||||
MCFG_TC0100SCN_PALETTE("palette")
|
MCFG_TC0100SCN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
|
MCFG_DEVICE_ADD("tc0150rod", TC0150ROD, 0)
|
||||||
|
MCFG_TC0150ROD_GFXTAG("gfx3")
|
||||||
|
|
||||||
MCFG_TC0110PCR_ADD("tc0110pcr")
|
MCFG_TC0110PCR_ADD("tc0110pcr")
|
||||||
MCFG_TC0110PCR_PALETTE("palette")
|
MCFG_TC0110PCR_PALETTE("palette")
|
||||||
|
|
||||||
@ -3156,7 +3156,9 @@ static MACHINE_CONFIG_START( chasehq, taitoz_state )
|
|||||||
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
||||||
MCFG_TC0100SCN_PALETTE("palette")
|
MCFG_TC0100SCN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
|
MCFG_DEVICE_ADD("tc0150rod", TC0150ROD, 0)
|
||||||
|
MCFG_TC0150ROD_GFXTAG("gfx3")
|
||||||
|
|
||||||
MCFG_TC0110PCR_ADD("tc0110pcr")
|
MCFG_TC0110PCR_ADD("tc0110pcr")
|
||||||
MCFG_TC0110PCR_PALETTE("palette")
|
MCFG_TC0110PCR_PALETTE("palette")
|
||||||
|
|
||||||
@ -3233,7 +3235,9 @@ static MACHINE_CONFIG_START( enforce, taitoz_state )
|
|||||||
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
||||||
MCFG_TC0100SCN_PALETTE("palette")
|
MCFG_TC0100SCN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
|
MCFG_DEVICE_ADD("tc0150rod", TC0150ROD, 0)
|
||||||
|
MCFG_TC0150ROD_GFXTAG("gfx3")
|
||||||
|
|
||||||
MCFG_TC0110PCR_ADD("tc0110pcr")
|
MCFG_TC0110PCR_ADD("tc0110pcr")
|
||||||
MCFG_TC0110PCR_PALETTE("palette")
|
MCFG_TC0110PCR_PALETTE("palette")
|
||||||
|
|
||||||
@ -3306,7 +3310,8 @@ static MACHINE_CONFIG_START( bshark, taitoz_state )
|
|||||||
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
||||||
MCFG_TC0100SCN_PALETTE("palette")
|
MCFG_TC0100SCN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
|
MCFG_DEVICE_ADD("tc0150rod", TC0150ROD, 0)
|
||||||
|
MCFG_TC0150ROD_GFXTAG("gfx3")
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||||
@ -3385,7 +3390,8 @@ static MACHINE_CONFIG_START( sci, taitoz_state )
|
|||||||
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
||||||
MCFG_TC0100SCN_PALETTE("palette")
|
MCFG_TC0100SCN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
|
MCFG_DEVICE_ADD("tc0150rod", TC0150ROD, 0)
|
||||||
|
MCFG_TC0150ROD_GFXTAG("gfx3")
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||||
@ -3459,7 +3465,9 @@ static MACHINE_CONFIG_START( nightstr, taitoz_state )
|
|||||||
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
||||||
MCFG_TC0100SCN_PALETTE("palette")
|
MCFG_TC0100SCN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
|
MCFG_DEVICE_ADD("tc0150rod", TC0150ROD, 0)
|
||||||
|
MCFG_TC0150ROD_GFXTAG("gfx3")
|
||||||
|
|
||||||
MCFG_TC0110PCR_ADD("tc0110pcr")
|
MCFG_TC0110PCR_ADD("tc0110pcr")
|
||||||
MCFG_TC0110PCR_PALETTE("palette")
|
MCFG_TC0110PCR_PALETTE("palette")
|
||||||
|
|
||||||
@ -3536,7 +3544,9 @@ static MACHINE_CONFIG_START( aquajack, taitoz_state )
|
|||||||
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
|
||||||
MCFG_TC0100SCN_PALETTE("palette")
|
MCFG_TC0100SCN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
|
MCFG_DEVICE_ADD("tc0150rod", TC0150ROD, 0)
|
||||||
|
MCFG_TC0150ROD_GFXTAG("gfx3")
|
||||||
|
|
||||||
MCFG_TC0110PCR_ADD("tc0110pcr")
|
MCFG_TC0110PCR_ADD("tc0110pcr")
|
||||||
MCFG_TC0110PCR_PALETTE("palette")
|
MCFG_TC0110PCR_PALETTE("palette")
|
||||||
|
|
||||||
@ -3679,7 +3689,8 @@ static MACHINE_CONFIG_START( dblaxle, taitoz_state )
|
|||||||
MCFG_TC0480SCP_GFXDECODE("gfxdecode")
|
MCFG_TC0480SCP_GFXDECODE("gfxdecode")
|
||||||
MCFG_TC0480SCP_PALETTE("palette")
|
MCFG_TC0480SCP_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
|
MCFG_DEVICE_ADD("tc0150rod", TC0150ROD, 0)
|
||||||
|
MCFG_TC0150ROD_GFXTAG("gfx3")
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||||
@ -3752,7 +3763,8 @@ static MACHINE_CONFIG_START( racingb, taitoz_state )
|
|||||||
MCFG_TC0480SCP_GFXDECODE("gfxdecode")
|
MCFG_TC0480SCP_GFXDECODE("gfxdecode")
|
||||||
MCFG_TC0480SCP_PALETTE("palette")
|
MCFG_TC0480SCP_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
|
MCFG_DEVICE_ADD("tc0150rod", TC0150ROD, 0)
|
||||||
|
MCFG_TC0150ROD_GFXTAG("gfx3")
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||||
|
@ -11,8 +11,6 @@ Road generator. Two roads allow for forking. Gfx data fetched from ROM. Refer to
|
|||||||
|
|
||||||
#define TC0150ROD_RAM_SIZE 0x2000
|
#define TC0150ROD_RAM_SIZE 0x2000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const device_type TC0150ROD = &device_creator<tc0150rod_device>;
|
const device_type TC0150ROD = &device_creator<tc0150rod_device>;
|
||||||
|
|
||||||
tc0150rod_device::tc0150rod_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
tc0150rod_device::tc0150rod_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
@ -21,25 +19,6 @@ tc0150rod_device::tc0150rod_device(const machine_config &mconfig, const char *ta
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// device_config_complete - perform any
|
|
||||||
// operations now that the configuration is
|
|
||||||
// complete
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
void tc0150rod_device::device_config_complete()
|
|
||||||
{
|
|
||||||
// inherit a copy of the static data
|
|
||||||
const tc0150rod_interface *intf = reinterpret_cast<const tc0150rod_interface *>(static_config());
|
|
||||||
if (intf != NULL)
|
|
||||||
*static_cast<tc0150rod_interface *>(this) = *intf;
|
|
||||||
|
|
||||||
// or initialize to defaults if none provided
|
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// device_start - device-specific startup
|
// device_start - device-specific startup
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -47,8 +26,10 @@ void tc0150rod_device::device_config_complete()
|
|||||||
void tc0150rod_device::device_start()
|
void tc0150rod_device::device_start()
|
||||||
{
|
{
|
||||||
m_ram = auto_alloc_array_clear(machine(), UINT16, TC0150ROD_RAM_SIZE / 2);
|
m_ram = auto_alloc_array_clear(machine(), UINT16, TC0150ROD_RAM_SIZE / 2);
|
||||||
|
|
||||||
save_pointer(NAME(m_ram), TC0150ROD_RAM_SIZE / 2);
|
save_pointer(NAME(m_ram), TC0150ROD_RAM_SIZE / 2);
|
||||||
|
|
||||||
|
m_roadgfx = (UINT16 *)machine().root_device().memregion(m_gfx_region)->base();
|
||||||
|
assert(m_roadgfx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -240,7 +221,6 @@ void tc0150rod_device::draw( bitmap_ind16 &bitmap, const rectangle &cliprect, in
|
|||||||
UINT16 roada_line[512], roadb_line[512];
|
UINT16 roada_line[512], roadb_line[512];
|
||||||
UINT16 *dst16;
|
UINT16 *dst16;
|
||||||
UINT16 *roada, *roadb;
|
UINT16 *roada, *roadb;
|
||||||
UINT16 *roadgfx = (UINT16 *)machine().root_device().memregion(m_gfx_region)->base();
|
|
||||||
|
|
||||||
UINT16 pixel, color, gfx_word;
|
UINT16 pixel, color, gfx_word;
|
||||||
UINT16 roada_clipl, roada_clipr, roada_bodyctrl;
|
UINT16 roada_clipl, roada_clipr, roada_bodyctrl;
|
||||||
@ -434,7 +414,7 @@ void tc0150rod_device::draw( bitmap_ind16 &bitmap, const rectangle &cliprect, in
|
|||||||
{
|
{
|
||||||
if (road_gfx_tilenum) /* fixes Nightstr round C */
|
if (road_gfx_tilenum) /* fixes Nightstr round C */
|
||||||
{
|
{
|
||||||
gfx_word = roadgfx[(road_gfx_tilenum << 8) + (x_index >> 3)];
|
gfx_word = m_roadgfx[(road_gfx_tilenum << 8) + (x_index >> 3)];
|
||||||
pixel = ((gfx_word >> (7 - (x_index % 8) + 8)) & 0x1) * 2 + ((gfx_word >> (7 - (x_index % 8))) & 0x1);
|
pixel = ((gfx_word >> (7 - (x_index % 8) + 8)) & 0x1) * 2 + ((gfx_word >> (7 - (x_index % 8))) & 0x1);
|
||||||
|
|
||||||
if ((pixel) || !(road_trans))
|
if ((pixel) || !(road_trans))
|
||||||
@ -485,7 +465,7 @@ void tc0150rod_device::draw( bitmap_ind16 &bitmap, const rectangle &cliprect, in
|
|||||||
{
|
{
|
||||||
for (i = left_edge; i >= 0; i--)
|
for (i = left_edge; i >= 0; i--)
|
||||||
{
|
{
|
||||||
gfx_word = roadgfx[(road_gfx_tilenum << 8) + (x_index >> 3)];
|
gfx_word = m_roadgfx[(road_gfx_tilenum << 8) + (x_index >> 3)];
|
||||||
pixel = ((gfx_word >> (7 - (x_index % 8) + 8)) & 0x1) * 2 + ((gfx_word >> (7 - (x_index % 8))) & 0x1);
|
pixel = ((gfx_word >> (7 - (x_index % 8) + 8)) & 0x1) * 2 + ((gfx_word >> (7 - (x_index % 8))) & 0x1);
|
||||||
|
|
||||||
pixpri = (pixel == 0) ? (0) : (pri); /* off edge has low priority */
|
pixpri = (pixel == 0) ? (0) : (pri); /* off edge has low priority */
|
||||||
@ -528,7 +508,7 @@ void tc0150rod_device::draw( bitmap_ind16 &bitmap, const rectangle &cliprect, in
|
|||||||
{
|
{
|
||||||
for (i = right_edge; i < screen_width; i++)
|
for (i = right_edge; i < screen_width; i++)
|
||||||
{
|
{
|
||||||
gfx_word = roadgfx[(road_gfx_tilenum << 8) + (x_index >> 3)];
|
gfx_word = m_roadgfx[(road_gfx_tilenum << 8) + (x_index >> 3)];
|
||||||
pixel = ((gfx_word >> (7 - (x_index % 8) + 8)) & 0x1) * 2 + ((gfx_word >> (7 - (x_index % 8))) & 0x1);
|
pixel = ((gfx_word >> (7 - (x_index % 8) + 8)) & 0x1) * 2 + ((gfx_word >> (7 - (x_index % 8))) & 0x1);
|
||||||
|
|
||||||
pixpri = (pixel == 0) ? (0) : (pri); /* off edge has low priority */
|
pixpri = (pixel == 0) ? (0) : (pri); /* off edge has low priority */
|
||||||
@ -642,7 +622,7 @@ void tc0150rod_device::draw( bitmap_ind16 &bitmap, const rectangle &cliprect, in
|
|||||||
{
|
{
|
||||||
for (i = begin; i < end; i++)
|
for (i = begin; i < end; i++)
|
||||||
{
|
{
|
||||||
gfx_word = roadgfx[(road_gfx_tilenum << 8) + (x_index >> 3)];
|
gfx_word = m_roadgfx[(road_gfx_tilenum << 8) + (x_index >> 3)];
|
||||||
pixel = ((gfx_word >> (7 - (x_index % 8) + 8)) & 0x1) * 2 + ((gfx_word >> (7 - (x_index % 8))) & 0x1);
|
pixel = ((gfx_word >> (7 - (x_index % 8) + 8)) & 0x1) * 2 + ((gfx_word >> (7 - (x_index % 8))) & 0x1);
|
||||||
|
|
||||||
if ((pixel) || !(road_trans))
|
if ((pixel) || !(road_trans))
|
||||||
@ -692,7 +672,7 @@ void tc0150rod_device::draw( bitmap_ind16 &bitmap, const rectangle &cliprect, in
|
|||||||
{
|
{
|
||||||
for (i = left_edge; i >= 0; i--)
|
for (i = left_edge; i >= 0; i--)
|
||||||
{
|
{
|
||||||
gfx_word = roadgfx[(road_gfx_tilenum << 8) + (x_index >> 3)];
|
gfx_word = m_roadgfx[(road_gfx_tilenum << 8) + (x_index >> 3)];
|
||||||
pixel = ((gfx_word >> (7 - (x_index % 8) + 8)) & 0x1) * 2 + ((gfx_word >> (7 - (x_index % 8))) & 0x1);
|
pixel = ((gfx_word >> (7 - (x_index % 8) + 8)) & 0x1) * 2 + ((gfx_word >> (7 - (x_index % 8))) & 0x1);
|
||||||
|
|
||||||
pixpri = (pixel == 0) ? (0) : (pri); /* off edge has low priority */
|
pixpri = (pixel == 0) ? (0) : (pri); /* off edge has low priority */
|
||||||
@ -735,7 +715,7 @@ void tc0150rod_device::draw( bitmap_ind16 &bitmap, const rectangle &cliprect, in
|
|||||||
{
|
{
|
||||||
for (i = right_edge; i < screen_width; i++)
|
for (i = right_edge; i < screen_width; i++)
|
||||||
{
|
{
|
||||||
gfx_word = roadgfx[(road_gfx_tilenum << 8) + (x_index >> 3)];
|
gfx_word = m_roadgfx[(road_gfx_tilenum << 8) + (x_index >> 3)];
|
||||||
pixel = ((gfx_word >> (7 - (x_index % 8) + 8)) & 0x1) * 2 + ((gfx_word >> (7 - (x_index % 8))) & 0x1);
|
pixel = ((gfx_word >> (7 - (x_index % 8) + 8)) & 0x1) * 2 + ((gfx_word >> (7 - (x_index % 8))) & 0x1);
|
||||||
|
|
||||||
pixpri = (pixel == 0) ? (0) : (pri); /* off edge has low priority */
|
pixpri = (pixel == 0) ? (0) : (pri); /* off edge has low priority */
|
||||||
|
@ -1,36 +1,33 @@
|
|||||||
#ifndef __TC0150ROD_H__
|
#ifndef __TC0150ROD_H__
|
||||||
#define __TC0150ROD_H__
|
#define __TC0150ROD_H__
|
||||||
|
|
||||||
struct tc0150rod_interface
|
class tc0150rod_device : public device_t
|
||||||
{
|
|
||||||
const char *m_gfx_region; /* gfx region for the road */
|
|
||||||
};
|
|
||||||
|
|
||||||
class tc0150rod_device : public device_t,
|
|
||||||
public tc0150rod_interface
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
tc0150rod_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
tc0150rod_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
~tc0150rod_device() {}
|
~tc0150rod_device() {}
|
||||||
|
|
||||||
|
static void set_gfx_tag(device_t &device, const char *tag) { downcast<tc0150rod_device &>(device).m_gfx_region = tag; }
|
||||||
|
|
||||||
DECLARE_READ16_MEMBER( word_r );
|
DECLARE_READ16_MEMBER( word_r );
|
||||||
DECLARE_WRITE16_MEMBER( word_w );
|
DECLARE_WRITE16_MEMBER( word_w );
|
||||||
void draw(bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs, int palette_offs, int type, int road_trans, bitmap_ind8 &priority_bitmap, UINT32 low_priority, UINT32 high_priority);
|
void draw(bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs, int palette_offs, int type, int road_trans, bitmap_ind8 &priority_bitmap, UINT32 low_priority, UINT32 high_priority);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_config_complete();
|
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// internal state
|
// internal state
|
||||||
UINT16 * m_ram;
|
UINT16 * m_ram;
|
||||||
|
const char *m_gfx_region; /* gfx region for the road */
|
||||||
|
UINT16 * m_roadgfx;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const device_type TC0150ROD;
|
extern const device_type TC0150ROD;
|
||||||
|
|
||||||
#define MCFG_TC0150ROD_ADD(_tag, _interface) \
|
|
||||||
MCFG_DEVICE_ADD(_tag, TC0150ROD, 0) \
|
#define MCFG_TC0150ROD_GFXTAG(_tag) \
|
||||||
MCFG_DEVICE_CONFIG(_interface)
|
tc0150rod_device::set_gfx_tag(*device, _tag);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user