trunk/src/emu/video/315_5124.c
| r31438 | r31439 | |
| 1661 | 1661 | |
| 1662 | 1662 | for (i = 0; i < 32; i++) |
| 1663 | 1663 | { |
| 1664 | | m_current_palette[i] = m_CRAM->u8(i) & 0x3f; |
| 1664 | m_current_palette[i] = m_CRAM[i] & 0x3f; |
| 1665 | 1665 | } |
| 1666 | 1666 | } |
| 1667 | 1667 | |
| r31438 | r31439 | |
| 1681 | 1681 | { |
| 1682 | 1682 | for (i = 0; i < 32; i++) |
| 1683 | 1683 | { |
| 1684 | | m_current_palette[i] = ((m_CRAM->u8(i) & 0x30) << 6) | ((m_CRAM->u8(i) & 0x0c ) << 4) | ((m_CRAM->u8(i) & 0x03) << 2); |
| 1684 | m_current_palette[i] = ((m_CRAM[i] & 0x30) << 6) | ((m_CRAM[i] & 0x0c ) << 4) | ((m_CRAM[i] & 0x03) << 2); |
| 1685 | 1685 | } |
| 1686 | 1686 | } |
| 1687 | 1687 | else |
| 1688 | 1688 | { |
| 1689 | 1689 | for (i = 0; i < 32; i++) |
| 1690 | 1690 | { |
| 1691 | | m_current_palette[i] = m_CRAM->u16(i) & 0x0fff; |
| 1691 | m_current_palette[i] = (m_CRAM[2*i] | (m_CRAM[2*i+1] << 8)) & 0x0fff; |
| 1692 | 1692 | } |
| 1693 | 1693 | } |
| 1694 | 1694 | } |
| r31438 | r31439 | |
| 1697 | 1697 | void sega315_5124_device::cram_write(UINT8 data) |
| 1698 | 1698 | { |
| 1699 | 1699 | UINT16 address = m_addr & m_cram_mask; |
| 1700 | | if (data != m_CRAM->u8(address)) |
| 1700 | if (data != m_CRAM[address]) |
| 1701 | 1701 | { |
| 1702 | | m_CRAM->u8(address) = data; |
| 1702 | m_CRAM[address] = data; |
| 1703 | 1703 | m_cram_dirty = 1; |
| 1704 | 1704 | } |
| 1705 | 1705 | } |
| r31438 | r31439 | |
| 1715 | 1715 | { |
| 1716 | 1716 | if (m_addr & 1) |
| 1717 | 1717 | { |
| 1718 | | UINT16 address = (m_addr & m_cram_mask) >> 1; |
| 1719 | | UINT16 dataw = (data << 8) | m_buffer; |
| 1720 | | if (dataw != m_CRAM->u16(address)) |
| 1718 | UINT16 address = (m_addr & m_cram_mask) & ~1; |
| 1719 | if (m_buffer != m_CRAM[address] || data != m_CRAM[address + 1]) |
| 1721 | 1720 | { |
| 1722 | | m_CRAM->u16(address) = dataw; |
| 1721 | m_CRAM[address] = m_buffer; |
| 1722 | m_CRAM[address + 1] = data; |
| 1723 | 1723 | m_cram_dirty = 1; |
| 1724 | 1724 | } |
| 1725 | 1725 | } |
| r31438 | r31439 | |
| 1782 | 1782 | |
| 1783 | 1783 | /* Allocate video RAM */ |
| 1784 | 1784 | astring tempstring; |
| 1785 | | m_CRAM = machine().memory().region_alloc(subtag(tempstring,"vdp_cram"), SEGA315_5378_CRAM_SIZE, 1, ENDIANNESS_LITTLE); |
| 1786 | 1785 | m_line_buffer = auto_alloc_array(machine(), int, 256 * 5); |
| 1787 | 1786 | |
| 1788 | 1787 | m_frame_timing = (m_is_pal) ? pal_192 : ntsc_192; |
| r31438 | r31439 | |
| 1830 | 1829 | save_item(NAME(m_sprite_count)); |
| 1831 | 1830 | save_item(NAME(m_sprite_height)); |
| 1832 | 1831 | save_item(NAME(m_sprite_zoom)); |
| 1832 | save_item(NAME(m_CRAM)); |
| 1833 | 1833 | |
| 1834 | 1834 | machine().save().register_postload(save_prepost_delegate(FUNC(sega315_5124_device::vdp_postload), this)); |
| 1835 | 1835 | } |
| r31438 | r31439 | |
| 1870 | 1870 | set_display_settings(); |
| 1871 | 1871 | |
| 1872 | 1872 | /* Clear RAM */ |
| 1873 | | memset(m_CRAM->base(), 0, SEGA315_5378_CRAM_SIZE); |
| 1873 | memset(m_CRAM, 0, sizeof(m_CRAM)); |
| 1874 | 1874 | memset(m_line_buffer, 0, 256 * 5 * sizeof(int)); |
| 1875 | 1875 | } |
| 1876 | 1876 | |