diff options
Diffstat (limited to 'src/mame/drivers/model2.cpp')
-rw-r--r-- | src/mame/drivers/model2.cpp | 49 |
1 files changed, 28 insertions, 21 deletions
diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp index 54b724459ba..7ee07b12800 100644 --- a/src/mame/drivers/model2.cpp +++ b/src/mame/drivers/model2.cpp @@ -495,17 +495,27 @@ static void chcolor(palette_device &palette, pen_t color, uint16_t data) palette.set_pen_color(color, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10)); } -WRITE16_MEMBER(model2_state::model2_palette_w) +WRITE16_MEMBER(model2_state::palette_w) { COMBINE_DATA(&m_palram[offset]); chcolor(*m_palette, offset, m_palram[offset]); } -READ16_MEMBER(model2_state::model2_palette_r) +READ16_MEMBER(model2_state::palette_r) { return m_palram[offset]; } +WRITE16_MEMBER(model2_state::colorxlat_w) +{ + COMBINE_DATA(&m_colorxlat[offset]); +} + +READ16_MEMBER(model2_state::colorxlat_r) +{ + return m_colorxlat[offset]; +} + WRITE32_MEMBER(model2_state::ctrl0_w) { if(ACCESSING_BITS_0_7) @@ -1406,18 +1416,14 @@ WRITE32_MEMBER(model2_state::model2o_tex_w1) } } -WRITE32_MEMBER(model2_state::model2o_luma_w) +READ16_MEMBER(model2_state::lumaram_r) { - if ( (offset & 1) == 0 ) - { - m_lumaram[offset>>1] &= 0xffff0000; - m_lumaram[offset>>1] |= data & 0xffff; - } - else - { - m_lumaram[offset>>1] &= 0x0000ffff; - m_lumaram[offset>>1] |= (data & 0xffff) << 16; - } + return m_lumaram[offset]; +} + +WRITE16_MEMBER(model2_state::lumaram_w) +{ + COMBINE_DATA(&m_lumaram[offset]); } /* Top Skater reads here and discards the result */ @@ -1465,8 +1471,8 @@ 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(0x01080000, 0x010fffff) AM_DEVREADWRITE16("tile", segas24_tile_device, char_r, char_w,0xffffffff) AM_MIRROR(0x100000) - AM_RANGE(0x01800000, 0x01803fff) AM_READWRITE16(model2_palette_r,model2_palette_w,0xffffffff) - AM_RANGE(0x01810000, 0x0181bfff) AM_RAM AM_SHARE("colorxlat") + AM_RANGE(0x01800000, 0x01803fff) AM_READWRITE16(palette_r, palette_w,0xffffffff) + AM_RANGE(0x01810000, 0x0181bfff) AM_READWRITE16(colorxlat_r,colorxlat_w,0xffffffff) AM_RANGE(0x0181c000, 0x0181c003) AM_WRITE(model2_3d_zclip_w) AM_RANGE(0x01a10000, 0x01a13fff) AM_DEVREADWRITE8("m2comm", m2comm_device, share_r, share_w, 0xffffffff) AM_RANGE(0x01a14000, 0x01a14003) AM_DEVREADWRITE8("m2comm", m2comm_device, cn_r, cn_w, 0x000000ff) @@ -1483,6 +1489,8 @@ static ADDRESS_MAP_START( model2_base_mem, AS_PROGRAM, 32, model2_state ) // format is xGGGGGBBBBBRRRRR (512x400) AM_RANGE(0x11600000, 0x1167ffff) AM_RAM AM_SHARE("fbvram1") // framebuffer A (last bronx title screen) AM_RANGE(0x11680000, 0x116fffff) AM_RAM AM_SHARE("fbvram2") // framebuffer B + + AM_RANGE(0x12800000, 0x1281ffff) AM_READWRITE16(lumaram_r,lumaram_w,0x0000ffff) // polygon "luma" RAM ADDRESS_MAP_END READ8_MEMBER(model2_state::virtuacop_lightgun_r) @@ -1555,7 +1563,6 @@ static ADDRESS_MAP_START( model2o_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x12000000, 0x121fffff) AM_RAM_WRITE(model2o_tex_w0) AM_MIRROR(0x200000) AM_SHARE("textureram0") // texture RAM 0 AM_RANGE(0x12400000, 0x125fffff) AM_RAM_WRITE(model2o_tex_w1) AM_MIRROR(0x200000) AM_SHARE("textureram1") // texture RAM 1 - AM_RANGE(0x12800000, 0x1281ffff) AM_RAM_WRITE(model2o_luma_w) AM_SHARE("lumaram") // polygon "luma" RAM AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2o_in_r, 0x00ff00ff) AM_RANGE(0x01c00040, 0x01c00043) AM_READ(daytona_unk_r) @@ -1591,7 +1598,6 @@ static ADDRESS_MAP_START( model2a_crx_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x12000000, 0x121fffff) AM_RAM_WRITE(model2o_tex_w0) AM_MIRROR(0x200000) AM_SHARE("textureram0") // texture RAM 0 AM_RANGE(0x12400000, 0x125fffff) AM_RAM_WRITE(model2o_tex_w1) AM_MIRROR(0x200000) AM_SHARE("textureram1") // texture RAM 1 - AM_RANGE(0x12800000, 0x1281ffff) AM_RAM_WRITE(model2o_luma_w) AM_SHARE("lumaram") // polygon "luma" RAM AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2_crx_in_r, 0x00ff00ff) AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE(ctrl0_w) @@ -1628,8 +1634,8 @@ static ADDRESS_MAP_START( model2b_crx_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x11100000, 0x111fffff) AM_RAM AM_SHARE("textureram0") // texture RAM 0 (2b/2c) AM_RANGE(0x11200000, 0x112fffff) AM_RAM AM_SHARE("textureram1") // texture RAM 1 (2b/2c) AM_RANGE(0x11300000, 0x113fffff) AM_RAM AM_SHARE("textureram1") // texture RAM 1 (2b/2c) - AM_RANGE(0x11400000, 0x1140ffff) AM_RAM AM_SHARE("lumaram") // polygon "luma" RAM (2b/2c) - AM_RANGE(0x12800000, 0x1281ffff) AM_RAM AM_SHARE("lumaram") // polygon "luma" RAM + AM_RANGE(0x11400000, 0x1140ffff) AM_READWRITE16(lumaram_r,lumaram_w,0xffffffff) // polygon "luma" RAM (2b/2c) + AM_RANGE(0x12800000, 0x1281ffff) AM_READWRITE16(lumaram_r,lumaram_w,0x0000ffff) // polygon "luma" RAM AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2_crx_in_r, 0x00ff00ff) AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE(ctrl0_w) @@ -1657,8 +1663,9 @@ static ADDRESS_MAP_START( model2c_crx_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x11000000, 0x111fffff) AM_RAM AM_SHARE("textureram0") // texture RAM 0 (2b/2c) AM_RANGE(0x11200000, 0x113fffff) AM_RAM AM_SHARE("textureram1") // texture RAM 1 (2b/2c) - AM_RANGE(0x11400000, 0x1140ffff) AM_RAM AM_SHARE("lumaram") // polygon "luma" RAM (2b/2c) - + AM_RANGE(0x11400000, 0x1140ffff) AM_READWRITE16(lumaram_r,lumaram_w,0xffffffff) // polygon "luma" RAM (2b/2c) + AM_RANGE(0x12800000, 0x1281ffff) AM_READWRITE16(lumaram_r,lumaram_w,0x0000ffff) // polygon "luma" RAM + AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2_crx_in_r, 0x00ff00ff) AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE(ctrl0_w) AM_RANGE(0x01c00014, 0x01c00017) AM_WRITE(hotd_lightgun_w) |