mirror of
https://github.com/holub/mame
synced 2025-04-21 16:01:56 +03:00
pc9801: bitswap egc mask just like the vram
This commit is contained in:
parent
514f10a0e7
commit
8a7e1eb7a8
@ -855,10 +855,14 @@ void pc9801vm_state::pc9801rs_a0_w(offs_t offset, uint8_t data)
|
||||
|
||||
void pc9801vm_state::egc_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
||||
{
|
||||
if(!(m_egc.regs[1] & 0x6000) || (offset != 4)) // why?
|
||||
COMBINE_DATA(&m_egc.regs[offset]);
|
||||
if((m_egc.regs[1] & 0x6000) && (offset == 4)) // why?
|
||||
return;
|
||||
COMBINE_DATA(&m_egc.regs[offset]);
|
||||
switch(offset)
|
||||
{
|
||||
case 4:
|
||||
m_egc.mask = bitswap<16>(m_egc.regs[4],8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
|
||||
break;
|
||||
case 2:
|
||||
case 6:
|
||||
case 7:
|
||||
@ -2029,6 +2033,7 @@ MACHINE_START_MEMBER(pc9801vm_state,pc9801rs)
|
||||
save_item(NAME(m_egc.leftover));
|
||||
save_item(NAME(m_egc.first));
|
||||
save_item(NAME(m_egc.start));
|
||||
save_item(NAME(m_egc.mask));
|
||||
|
||||
save_item(NAME(m_grcg.mode));
|
||||
save_item(NAME(m_vram_bank));
|
||||
|
@ -494,6 +494,7 @@ private:
|
||||
uint16_t pat[4]{};
|
||||
uint16_t src[4]{};
|
||||
int16_t count = 0;
|
||||
uint16_t mask;
|
||||
uint16_t leftover[4]{};
|
||||
bool first = false;
|
||||
bool start = false;
|
||||
|
@ -720,7 +720,7 @@ uint16_t pc9801vm_state::egc_do_partial_op(int plane, uint16_t src, uint16_t pat
|
||||
|
||||
void pc9801vm_state::egc_blit_w(uint32_t offset, uint16_t data, uint16_t mem_mask)
|
||||
{
|
||||
uint16_t mask = m_egc.regs[4] & mem_mask, out = 0;
|
||||
uint16_t mask = m_egc.mask & mem_mask, out = 0;
|
||||
bool dir = !(m_egc.regs[6] & 0x1000);
|
||||
int dst_off = (m_egc.regs[6] >> 4) & 0xf, src_off = m_egc.regs[6] & 0xf;
|
||||
offset = (offset & 0x3fff) + m_vram_bank * 0x10000;
|
||||
|
Loading…
Reference in New Issue
Block a user