Removed bogus AM_SHARE for paletteram

This commit is contained in:
Angelo Salese 2014-04-21 13:12:24 +00:00
parent 4ff2daf1bf
commit 39e73d5495
4 changed files with 18 additions and 15 deletions

View File

@ -464,13 +464,15 @@ static void chcolor(palette_device &palette, pen_t color, UINT16 data)
palette.set_pen_color(color, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10)); palette.set_pen_color(color, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
} }
WRITE32_MEMBER(model2_state::pal32_w) WRITE16_MEMBER(model2_state::model2_palette_w)
{ {
COMBINE_DATA(m_paletteram32 + offset); COMBINE_DATA(&m_palram[offset]);
if(ACCESSING_BITS_0_15) chcolor(m_palette, offset, m_palram[offset]);
chcolor(m_palette, offset * 2, m_paletteram32[offset]); }
if(ACCESSING_BITS_16_31)
chcolor(m_palette, offset * 2 + 1, m_paletteram32[offset] >> 16); READ16_MEMBER(model2_state::model2_palette_r)
{
return m_palram[offset];
} }
WRITE32_MEMBER(model2_state::ctrl0_w) WRITE32_MEMBER(model2_state::ctrl0_w)
@ -1512,7 +1514,7 @@ static ADDRESS_MAP_START( model2_base_mem, AS_PROGRAM, 32, model2_state )
AM_RANGE(0x01070000, 0x01070003) AM_WRITENOP AM_MIRROR(0x100000) // Video synchronization switch AM_RANGE(0x01070000, 0x01070003) AM_WRITENOP AM_MIRROR(0x100000) // Video synchronization switch
AM_RANGE(0x01080000, 0x010fffff) AM_DEVREADWRITE("tile", segas24_tile, char32_r, char32_w) AM_MIRROR(0x100000) AM_RANGE(0x01080000, 0x010fffff) AM_DEVREADWRITE("tile", segas24_tile, char32_r, char32_w) AM_MIRROR(0x100000)
AM_RANGE(0x01800000, 0x01803fff) AM_RAM_WRITE(pal32_w) AM_SHARE("paletteram32") AM_RANGE(0x01800000, 0x01803fff) AM_READWRITE16(model2_palette_r,model2_palette_w,0xffffffff)
AM_RANGE(0x01810000, 0x0181bfff) AM_RAM AM_SHARE("colorxlat") AM_RANGE(0x01810000, 0x0181bfff) AM_RAM AM_SHARE("colorxlat")
AM_RANGE(0x0181c000, 0x0181c003) AM_WRITE(model2_3d_zclip_w) AM_RANGE(0x0181c000, 0x0181c003) AM_WRITE(model2_3d_zclip_w)
AM_RANGE(0x01a10000, 0x01a1ffff) AM_READWRITE(network_r, network_w) AM_RANGE(0x01a10000, 0x01a1ffff) AM_READWRITE(network_r, network_w)

View File

@ -16,7 +16,6 @@ public:
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_workram(*this, "workram"), m_workram(*this, "workram"),
m_bufferram(*this, "bufferram"), m_bufferram(*this, "bufferram"),
m_paletteram32(*this, "paletteram32"),
m_colorxlat(*this, "colorxlat"), m_colorxlat(*this, "colorxlat"),
m_textureram0(*this, "textureram0"), m_textureram0(*this, "textureram0"),
m_textureram1(*this, "textureram1"), m_textureram1(*this, "textureram1"),
@ -37,7 +36,7 @@ public:
required_shared_ptr<UINT32> m_workram; required_shared_ptr<UINT32> m_workram;
required_shared_ptr<UINT32> m_bufferram; required_shared_ptr<UINT32> m_bufferram;
required_shared_ptr<UINT32> m_paletteram32; UINT16 *m_palram;
required_shared_ptr<UINT32> m_colorxlat; required_shared_ptr<UINT32> m_colorxlat;
required_shared_ptr<UINT32> m_textureram0; required_shared_ptr<UINT32> m_textureram0;
required_shared_ptr<UINT32> m_textureram1; required_shared_ptr<UINT32> m_textureram1;
@ -113,7 +112,8 @@ public:
DECLARE_CUSTOM_INPUT_MEMBER(rchase2_devices_r); DECLARE_CUSTOM_INPUT_MEMBER(rchase2_devices_r);
DECLARE_READ32_MEMBER(timers_r); DECLARE_READ32_MEMBER(timers_r);
DECLARE_WRITE32_MEMBER(timers_w); DECLARE_WRITE32_MEMBER(timers_w);
DECLARE_WRITE32_MEMBER(pal32_w); DECLARE_READ16_MEMBER(model2_palette_r);
DECLARE_WRITE16_MEMBER(model2_palette_w);
DECLARE_WRITE32_MEMBER(ctrl0_w); DECLARE_WRITE32_MEMBER(ctrl0_w);
DECLARE_WRITE32_MEMBER(analog_2b_w); DECLARE_WRITE32_MEMBER(analog_2b_w);
DECLARE_READ32_MEMBER(fifoctl_r); DECLARE_READ32_MEMBER(fifoctl_r);

View File

@ -2713,6 +2713,9 @@ VIDEO_START_MEMBER(model2_state,model2)
/* initialize the geometry engine */ /* initialize the geometry engine */
geo_init( machine(), (UINT32*)memregion("user2")->base() ); geo_init( machine(), (UINT32*)memregion("user2")->base() );
/* init various video-related pointers */
m_palram = auto_alloc_array_clear(machine(), UINT16, 0x2000);
} }
UINT32 model2_state::screen_update_model2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) UINT32 model2_state::screen_update_model2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
@ -2733,7 +2736,7 @@ UINT32 model2_state::screen_update_model2(screen_device &screen, bitmap_rgb32 &b
/* tell the rasterizer we're starting a frame */ /* tell the rasterizer we're starting a frame */
model2_3d_frame_start(this); model2_3d_frame_start(this);
/* let the geometry engine do it's thing */ /* let the geometry engine do it's thing */ /* TODO: don't do it here! */
geo_parse(this); geo_parse(this);
/* have the rasterizer output the frame */ /* have the rasterizer output the frame */

View File

@ -67,7 +67,6 @@ static void MODEL2_FUNC_NAME(void *dest, INT32 scanline, const poly_extent *exte
const UINT16 *colortable_g = (const UINT16 *)&state->m_colorxlat[0x4000/4]; const UINT16 *colortable_g = (const UINT16 *)&state->m_colorxlat[0x4000/4];
const UINT16 *colortable_b = (const UINT16 *)&state->m_colorxlat[0x8000/4]; const UINT16 *colortable_b = (const UINT16 *)&state->m_colorxlat[0x8000/4];
const UINT16 *lumaram = (const UINT16 *)state->m_lumaram.target(); const UINT16 *lumaram = (const UINT16 *)state->m_lumaram.target();
const UINT16 *palram = (const UINT16 *)state->m_paletteram32.target();
UINT32 lumabase = extra->lumabase; UINT32 lumabase = extra->lumabase;
UINT32 color = extra->colorbase; UINT32 color = extra->colorbase;
UINT8 luma; UINT8 luma;
@ -81,7 +80,7 @@ static void MODEL2_FUNC_NAME(void *dest, INT32 scanline, const poly_extent *exte
luma = lumaram[BYTE_XOR_LE(lumabase + (0xf << 3))] & 0x3F; luma = lumaram[BYTE_XOR_LE(lumabase + (0xf << 3))] & 0x3F;
color = palram[BYTE_XOR_LE(color + 0x1000)] & 0x7fff; color = state->m_palram[BYTE_XOR_LE(color + 0x1000)] & 0x7fff;
colortable_r += ((color >> 0) & 0x1f) << 8; colortable_r += ((color >> 0) & 0x1f) << 8;
colortable_g += ((color >> 5) & 0x1f) << 8; colortable_g += ((color >> 5) & 0x1f) << 8;
@ -123,7 +122,6 @@ static void MODEL2_FUNC_NAME(void *dest, INT32 scanline, const poly_extent *exte
const UINT16 *colortable_g = (const UINT16 *)&state->m_colorxlat[0x4000/4]; const UINT16 *colortable_g = (const UINT16 *)&state->m_colorxlat[0x4000/4];
const UINT16 *colortable_b = (const UINT16 *)&state->m_colorxlat[0x8000/4]; const UINT16 *colortable_b = (const UINT16 *)&state->m_colorxlat[0x8000/4];
const UINT16 *lumaram = (const UINT16 *)state->m_lumaram.target(); const UINT16 *lumaram = (const UINT16 *)state->m_lumaram.target();
const UINT16 *palram = (const UINT16 *)state->m_paletteram32.target();
UINT32 colorbase = extra->colorbase; UINT32 colorbase = extra->colorbase;
UINT32 lumabase = extra->lumabase; UINT32 lumabase = extra->lumabase;
UINT32 tex_x = extra->texx; UINT32 tex_x = extra->texx;
@ -143,7 +141,7 @@ static void MODEL2_FUNC_NAME(void *dest, INT32 scanline, const poly_extent *exte
tex_x_mask = tex_width - 1; tex_x_mask = tex_width - 1;
tex_y_mask = tex_height - 1; tex_y_mask = tex_height - 1;
colorbase = palram[BYTE_XOR_LE(colorbase + 0x1000)] & 0x7fff; colorbase = state->m_palram[BYTE_XOR_LE(colorbase + 0x1000)] & 0x7fff;
colortable_r += ((colorbase >> 0) & 0x1f) << 8; colortable_r += ((colorbase >> 0) & 0x1f) << 8;
colortable_g += ((colorbase >> 5) & 0x1f) << 8; colortable_g += ((colorbase >> 5) & 0x1f) << 8;