diff options
author | 2017-12-13 21:01:10 -0700 | |
---|---|---|
committer | 2017-12-13 21:01:10 -0700 | |
commit | 54155441e9ba9941e85d80c4834a66376a11e791 (patch) | |
tree | aa44bdaf0035cbe188d64c447f225f10f7d76d8d /src/devices/video/gba_lcd.cpp | |
parent | f537428e5a40ba6dde8ca9bf0fe9ae6b1f189ac4 (diff) |
Revert "Merge branch 'master' of https://github.com/mamedev/mame"
This reverts commit f537428e5a40ba6dde8ca9bf0fe9ae6b1f189ac4, reversing
changes made to 0d70d798107d4e4e8fb9f230410aeb1e888d65c5.
Diffstat (limited to 'src/devices/video/gba_lcd.cpp')
-rw-r--r-- | src/devices/video/gba_lcd.cpp | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/src/devices/video/gba_lcd.cpp b/src/devices/video/gba_lcd.cpp index ba63bca0008..c73996e32a3 100644 --- a/src/devices/video/gba_lcd.cpp +++ b/src/devices/video/gba_lcd.cpp @@ -1620,6 +1620,34 @@ WRITE32_MEMBER(gba_lcd_device::video_w) } } +static inline uint32_t combine_data_32_16(uint32_t prev, uint32_t data, uint32_t mem_mask) +{ + COMBINE_DATA(&prev); + + switch (mem_mask) + { + case 0x000000ff: + prev &= 0xffff00ff; + prev |= data << 8; + break; + case 0x0000ff00: + prev &= 0xffffff00; + prev |= data >> 8; + break; + case 0x00ff0000: + prev &= 0x00ffffff; + prev |= data << 8; + break; + case 0xff000000: + prev &= 0xff00ffff; + prev |= data >> 8; + break; + default: + break; + } + return prev; +} + READ32_MEMBER(gba_lcd_device::gba_pram_r) { return m_pram[offset]; @@ -1627,7 +1655,7 @@ READ32_MEMBER(gba_lcd_device::gba_pram_r) WRITE32_MEMBER(gba_lcd_device::gba_pram_w) { - COMBINE_DATA(&m_pram[offset]); + m_pram[offset] = combine_data_32_16(m_pram[offset], data, mem_mask); } READ32_MEMBER(gba_lcd_device::gba_vram_r) @@ -1637,7 +1665,7 @@ READ32_MEMBER(gba_lcd_device::gba_vram_r) WRITE32_MEMBER(gba_lcd_device::gba_vram_w) { - COMBINE_DATA(&m_vram[offset]); + m_vram[offset] = combine_data_32_16(m_vram[offset], data, mem_mask); } READ32_MEMBER(gba_lcd_device::gba_oam_r) @@ -1647,7 +1675,7 @@ READ32_MEMBER(gba_lcd_device::gba_oam_r) WRITE32_MEMBER(gba_lcd_device::gba_oam_w) { - COMBINE_DATA(&m_oam[offset]); + m_oam[offset] = combine_data_32_16(m_oam[offset], data, mem_mask); } TIMER_CALLBACK_MEMBER(gba_lcd_device::perform_hbl) |