summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/gba_lcd.cpp
diff options
context:
space:
mode:
author Firehawke <Firehawke@users.noreply.github.com>2017-12-13 21:01:10 -0700
committer Firehawke <Firehawke@users.noreply.github.com>2017-12-13 21:01:10 -0700
commit54155441e9ba9941e85d80c4834a66376a11e791 (patch)
treeaa44bdaf0035cbe188d64c447f225f10f7d76d8d /src/devices/video/gba_lcd.cpp
parentf537428e5a40ba6dde8ca9bf0fe9ae6b1f189ac4 (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.cpp34
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)