itech32.c, btime.c, scregg.c: fix generic_paletteram regression (nw)

This commit is contained in:
Alex W. Jackson 2014-04-24 06:29:29 +00:00
parent 892ef2fba9
commit 344a7c89d5
5 changed files with 25 additions and 69 deletions

View File

@ -153,6 +153,7 @@
#define PALETTE_FORMAT_XBRG raw_to_rgb_converter(4, &raw_to_rgb_converter::standard_rgb_decoder<8,8,8, 8,0,16>)
#define PALETTE_FORMAT_XGRB raw_to_rgb_converter(4, &raw_to_rgb_converter::standard_rgb_decoder<8,8,8, 8,16,0>)
#define PALETTE_FORMAT_RGBX raw_to_rgb_converter(4, &raw_to_rgb_converter::standard_rgb_decoder<8,8,8, 24,16,8>)
#define PALETTE_FORMAT_GRBX raw_to_rgb_converter(4, &raw_to_rgb_converter::standard_rgb_decoder<8,8,8, 16,24,8>)

View File

@ -880,7 +880,7 @@ static ADDRESS_MAP_START( timekill_map, AS_PROGRAM, 16, itech32_state )
AM_RANGE(0x078000, 0x078001) AM_WRITE(sound_data_w)
AM_RANGE(0x080000, 0x08007f) AM_READWRITE(itech32_video_r, itech32_video_w) AM_SHARE("video")
AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(int1_ack_w)
AM_RANGE(0x0c0000, 0x0c7fff) AM_RAM_WRITE(timekill_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x0c0000, 0x0c7fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("main_rom")
ADDRESS_MAP_END
@ -898,7 +898,7 @@ static ADDRESS_MAP_START( bloodstm_map, AS_PROGRAM, 16, itech32_state )
AM_RANGE(0x400000, 0x400001) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x480000, 0x480001) AM_WRITE(sound_data_w)
AM_RANGE(0x500000, 0x5000ff) AM_READWRITE(bloodstm_video_r, bloodstm_video_w) AM_SHARE("video")
AM_RANGE(0x580000, 0x59ffff) AM_RAM_WRITE(bloodstm_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x580000, 0x59ffff) AM_RAM_WRITE(bloodstm_paletteram_w) AM_SHARE("palette")
AM_RANGE(0x700000, 0x700001) AM_WRITE(bloodstm_plane_w)
AM_RANGE(0x780000, 0x780001) AM_READ_PORT("EXTRA")
AM_RANGE(0x800000, 0x87ffff) AM_MIRROR(0x780000) AM_ROM AM_REGION("user1", 0) AM_SHARE("main_rom")
@ -962,7 +962,7 @@ AM_RANGE(0x000c00, 0x007fff) AM_MIRROR(0x40000) AM_READWRITE(test2_r, test2_w)
AM_RANGE(0x08e000, 0x08e003) AM_READ_PORT("8e000") AM_WRITENOP
AM_RANGE(0x100000, 0x10000f) AM_WRITE(drivedge_zbuf_control_w) AM_SHARE("drivedge_zctl")
AM_RANGE(0x180000, 0x180003) AM_WRITE(drivedge_color0_w)
AM_RANGE(0x1a0000, 0x1bffff) AM_RAM_WRITE(drivedge_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x1a0000, 0x1bffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x1c0000, 0x1c0003) AM_WRITENOP
AM_RANGE(0x1e0000, 0x1e0113) AM_READWRITE(itech020_video_r, itech020_video_w) AM_SHARE("video")
AM_RANGE(0x1e4000, 0x1e4003) AM_WRITE(tms_reset_assert_w)
@ -1000,7 +1000,7 @@ static ADDRESS_MAP_START( itech020_map, AS_PROGRAM, 32, itech32_state )
AM_RANGE(0x480000, 0x480003) AM_WRITE(sound_data32_w)
AM_RANGE(0x500000, 0x5000ff) AM_READWRITE(itech020_video_r, itech020_video_w) AM_SHARE("video")
AM_RANGE(0x578000, 0x57ffff) AM_READNOP /* touched by protection */
AM_RANGE(0x580000, 0x59ffff) AM_RAM_WRITE(itech020_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x580000, 0x59ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x600000, 0x603fff) AM_RAM AM_SHARE("nvram")
/* ? */ AM_RANGE(0x61ff00, 0x61ffff) AM_WRITENOP /* Unknown Writes */
AM_RANGE(0x680000, 0x680003) AM_READ(itech020_prot_result_r) AM_WRITENOP
@ -1679,6 +1679,7 @@ static MACHINE_CONFIG_START( timekill, itech32_state )
/* video hardware */
MCFG_PALETTE_ADD("palette", 8192)
MCFG_PALETTE_FORMAT(GRBX)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
@ -1711,10 +1712,12 @@ static MACHINE_CONFIG_DERIVED( bloodstm, timekill )
/* video hardware */
MCFG_PALETTE_MODIFY("palette")
MCFG_PALETTE_ENTRIES(32768)
MCFG_PALETTE_FORMAT(XBGR)
MCFG_PALETTE_ENDIANNESS(ENDIANNESS_LITTLE)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( drivedge, bloodstm )
static MACHINE_CONFIG_DERIVED( drivedge, timekill )
/* basic machine hardware */
@ -1727,6 +1730,10 @@ static MACHINE_CONFIG_DERIVED( drivedge, bloodstm )
MCFG_CPU_ADD("dsp2", TMS32031, TMS_CLOCK)
MCFG_CPU_PROGRAM_MAP(drivedge_tms2_map)
MCFG_PALETTE_MODIFY("palette")
MCFG_PALETTE_ENTRIES(32768)
MCFG_PALETTE_FORMAT(XBGR)
MCFG_DEVICE_MODIFY("via6522_0")
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(itech32_state,drivedge_portb_out))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(itech32_state,drivedge_turbo_light))
@ -1738,7 +1745,7 @@ static MACHINE_CONFIG_DERIVED( drivedge, bloodstm )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( sftm, bloodstm )
static MACHINE_CONFIG_DERIVED( sftm, timekill )
/* basic machine hardware */
@ -1750,6 +1757,10 @@ static MACHINE_CONFIG_DERIVED( sftm, bloodstm )
MCFG_CPU_PROGRAM_MAP(sound_020_map)
MCFG_CPU_PERIODIC_INT_DRIVER(itech32_state, irq1_line_assert, 4*60)
MCFG_PALETTE_MODIFY("palette")
MCFG_PALETTE_ENTRIES(32768)
MCFG_PALETTE_FORMAT(XRGB)
/* via */
MCFG_DEVICE_REMOVE("via6522_0")
MACHINE_CONFIG_END

View File

@ -23,9 +23,7 @@ public:
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_generic_paletteram_8(*this, "paletteram")
{ }
m_palette(*this, "palette") { }
/* memory pointers */
optional_shared_ptr<UINT8> m_rambase;
@ -64,7 +62,6 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_shared_ptr<UINT8> m_generic_paletteram_8;
DECLARE_WRITE8_MEMBER(audio_nmi_enable_w);
DECLARE_WRITE8_MEMBER(lnc_w);

View File

@ -34,9 +34,7 @@ public:
m_dsp1(*this, "dsp1"),
m_dsp2(*this, "dsp2"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_generic_paletteram_16(*this, "paletteram"),
m_generic_paletteram_32(*this, "paletteram") { }
m_palette(*this, "palette") { }
optional_shared_ptr<UINT16> m_main_ram;
optional_shared_ptr<UINT16> m_nvram;
@ -133,10 +131,7 @@ public:
DECLARE_WRITE32_MEMBER(itech020_color1_w);
DECLARE_WRITE32_MEMBER(itech020_color2_w);
DECLARE_WRITE32_MEMBER(itech020_plane_w);
DECLARE_WRITE16_MEMBER(timekill_paletteram_w);
DECLARE_WRITE16_MEMBER(bloodstm_paletteram_w);
DECLARE_WRITE32_MEMBER(drivedge_paletteram_w);
DECLARE_WRITE32_MEMBER(itech020_paletteram_w);
DECLARE_WRITE16_MEMBER(itech32_video_w);
DECLARE_READ16_MEMBER(itech32_video_r);
DECLARE_WRITE16_MEMBER(bloodstm_video_w);
@ -199,6 +194,4 @@ public:
optional_device<cpu_device> m_dsp2;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_shared_ptr<UINT16> m_generic_paletteram_16;
required_shared_ptr<UINT32> m_generic_paletteram_32;
};

View File

@ -301,62 +301,16 @@ WRITE32_MEMBER(itech32_state::itech020_plane_w)
*
*************************************/
WRITE16_MEMBER(itech32_state::timekill_paletteram_w)
{
int r, g, b;
COMBINE_DATA(&m_generic_paletteram_16[offset]);
r = m_generic_paletteram_16[offset & ~1] & 0xff;
g = m_generic_paletteram_16[offset & ~1] >> 8;
b = m_generic_paletteram_16[offset | 1] >> 8;
m_palette->set_pen_color(offset / 2, rgb_t(r, g, b));
}
WRITE16_MEMBER(itech32_state::bloodstm_paletteram_w)
{
int r, g, b;
/* in test mode, the LSB is used; in game mode, the MSB is used */
if (!ACCESSING_BITS_0_7 && (offset & 1))
data >>= 8, mem_mask >>= 8;
COMBINE_DATA(&m_generic_paletteram_16[offset]);
{
data >>= 8;
mem_mask >>= 8;
}
r = m_generic_paletteram_16[offset & ~1] & 0xff;
g = m_generic_paletteram_16[offset & ~1] >> 8;
b = m_generic_paletteram_16[offset | 1] & 0xff;
m_palette->set_pen_color(offset / 2, rgb_t(r, g, b));
}
WRITE32_MEMBER(itech32_state::drivedge_paletteram_w)
{
int r, g, b;
COMBINE_DATA(&m_generic_paletteram_32[offset]);
r = m_generic_paletteram_32[offset] & 0xff;
g = (m_generic_paletteram_32[offset] >> 8) & 0xff;
b = (m_generic_paletteram_32[offset] >> 16) & 0xff;
m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
WRITE32_MEMBER(itech32_state::itech020_paletteram_w)
{
int r, g, b;
COMBINE_DATA(&m_generic_paletteram_32[offset]);
r = (m_generic_paletteram_32[offset] >> 16) & 0xff;
g = (m_generic_paletteram_32[offset] >> 8) & 0xff;
b = m_generic_paletteram_32[offset] & 0xff;
m_palette->set_pen_color(offset, rgb_t(r, g, b));
m_palette->write(space, offset, data, mem_mask);
}