Merge pull request #3432 from cam900/tlc34076_unique

tlc34076.cpp Cleanups
This commit is contained in:
ajrhacker 2018-04-08 23:51:26 -04:00 committed by GitHub
commit 938bfbee61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 14 deletions

View File

@ -53,9 +53,15 @@ tlc34076_device::tlc34076_device(const machine_config &mconfig, const char *tag,
//------------------------------------------------- //-------------------------------------------------
void tlc34076_device::device_start() void tlc34076_device::device_start()
{ {
save_item(NAME(m_local_paletteram)); for (int i = 0; i < 3; i++)
{
m_local_paletteram[i] = std::make_unique<uint8_t[]>(0x100);
save_pointer(NAME(m_local_paletteram[i].get()), 0x100, i);
}
m_pens = std::make_unique<rgb_t[]>(0x100);
save_item(NAME(m_regs)); save_item(NAME(m_regs));
save_item(NAME(m_pens)); save_pointer(NAME(m_pens.get()), 0x100);
save_item(NAME(m_writeindex)); save_item(NAME(m_writeindex));
save_item(NAME(m_readindex)); save_item(NAME(m_readindex));
@ -97,9 +103,9 @@ const rgb_t *tlc34076_device::get_pens()
if ((i & m_regs[PIXEL_READ_MASK]) == i) if ((i & m_regs[PIXEL_READ_MASK]) == i)
{ {
r = m_local_paletteram[3 * i + 0]; r = m_local_paletteram[0][i];
g = m_local_paletteram[3 * i + 1]; g = m_local_paletteram[1][i];
b = m_local_paletteram[3 * i + 2]; b = m_local_paletteram[2][i];
if (m_dacbits == 6) if (m_dacbits == 6)
{ {
@ -118,7 +124,7 @@ const rgb_t *tlc34076_device::get_pens()
m_pens[i] = rgb_t(r, g, b); m_pens[i] = rgb_t(r, g, b);
} }
return m_pens; return m_pens.get();
} }
@ -140,9 +146,8 @@ READ8_MEMBER( tlc34076_device::read )
case PALETTE_DATA: case PALETTE_DATA:
if (m_readindex == 0) if (m_readindex == 0)
{ {
m_palettedata[0] = m_local_paletteram[3 * m_regs[PALETTE_READ_ADDR] + 0]; for (int i = 0; i < 3; i++)
m_palettedata[1] = m_local_paletteram[3 * m_regs[PALETTE_READ_ADDR] + 1]; m_palettedata[i] = m_local_paletteram[i][m_regs[PALETTE_READ_ADDR]];
m_palettedata[2] = m_local_paletteram[3 * m_regs[PALETTE_READ_ADDR] + 2];
} }
result = m_palettedata[m_readindex++]; result = m_palettedata[m_readindex++];
if (m_readindex == 3) if (m_readindex == 3)
@ -181,9 +186,9 @@ WRITE8_MEMBER( tlc34076_device::write )
m_palettedata[m_writeindex++] = data; m_palettedata[m_writeindex++] = data;
if (m_writeindex == 3) if (m_writeindex == 3)
{ {
m_local_paletteram[3 * m_regs[PALETTE_WRITE_ADDR] + 0] = m_palettedata[0]; for (int i = 0; i < 3; i++)
m_local_paletteram[3 * m_regs[PALETTE_WRITE_ADDR] + 1] = m_palettedata[1]; m_local_paletteram[i][m_regs[PALETTE_WRITE_ADDR]] = m_palettedata[i];
m_local_paletteram[3 * m_regs[PALETTE_WRITE_ADDR] + 2] = m_palettedata[2];
m_writeindex = 0; m_writeindex = 0;
m_regs[PALETTE_WRITE_ADDR]++; m_regs[PALETTE_WRITE_ADDR]++;
} }

View File

@ -46,13 +46,13 @@ protected:
private: private:
// internal state // internal state
uint8_t m_local_paletteram[0x300]; std::unique_ptr<uint8_t[]> m_local_paletteram[3];
uint8_t m_regs[0x10]; uint8_t m_regs[0x10];
uint8_t m_palettedata[3]; uint8_t m_palettedata[3];
uint8_t m_writeindex; uint8_t m_writeindex;
uint8_t m_readindex; uint8_t m_readindex;
uint8_t m_dacbits; uint8_t m_dacbits;
rgb_t m_pens[0x100]; std::unique_ptr<rgb_t[]> m_pens;
}; };