xmen6p: fixed some gfx issues [dink/fbneo]

This commit is contained in:
Robbbert 2020-07-22 22:18:23 +10:00
parent a9ca16768b
commit 91fa417760
3 changed files with 25 additions and 6 deletions

View File

@ -48,6 +48,7 @@ void xmen_state::eeprom_w(offs_t offset, uint16_t data, uint16_t mem_mask)
/* bit 4 is cs (active low) */
/* bit 5 is enabled in IRQ3, disabled in IRQ5 (sprite DMA start?) */
ioport("EEPROMOUT")->write(data, 0xff);
m_xmen6p_tilemap_select = BIT(data, 7);
}
if (ACCESSING_BITS_8_15)
{
@ -152,7 +153,7 @@ void xmen_state::_6p_main_map(address_map &map)
map(0x1d0000, 0x1d37ff).readonly();
map(0x1d0000, 0x1d37ff).writeonly();
*/
map(0x1cc000, 0x1d7fff).ram(); /* tilemap ? */
map(0x1cc000, 0x1d7fff).ram().share("tilemapleftalt"); /* tilemap ? */
/* whats the stuff below, buffers? */
/*
@ -163,7 +164,7 @@ void xmen_state::_6p_main_map(address_map &map)
map(0x1f4000, 0x1f77ff).readonly();
map(0x1f4000, 0x1f77ff).writeonly();
*/
map(0x1ec000, 0x1f7fff).ram(); /* tilemap ? */
map(0x1ec000, 0x1f7fff).ram().share("tilemaprightalt"); /* tilemap ? */
}
@ -270,6 +271,7 @@ void xmen_state::machine_start()
save_item(NAME(m_layer_colorbase));
save_item(NAME(m_layerpri));
save_item(NAME(m_vblank_irq_mask));
save_item(NAME(m_xmen6p_tilemap_select));
}
void xmen_state::machine_reset()

View File

@ -24,6 +24,8 @@ public:
m_xmen6p_spriteramright(*this, "spriteramright"),
m_xmen6p_tilemapleft(*this, "tilemapleft"),
m_xmen6p_tilemapright(*this, "tilemapright"),
m_xmen6p_tilemapleftalt(*this, "tilemapleftalt"),
m_xmen6p_tilemaprightalt(*this, "tilemaprightalt"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_k054539(*this, "k054539"),
@ -53,10 +55,13 @@ private:
optional_shared_ptr<uint16_t> m_xmen6p_spriteramright;
optional_shared_ptr<uint16_t> m_xmen6p_tilemapleft;
optional_shared_ptr<uint16_t> m_xmen6p_tilemapright;
optional_shared_ptr<uint16_t> m_xmen6p_tilemapleftalt;
optional_shared_ptr<uint16_t> m_xmen6p_tilemaprightalt;
uint16_t * m_k053247_ram;
/* misc */
uint8_t m_vblank_irq_mask;
bool m_xmen6p_tilemap_select;
/* devices */
required_device<cpu_device> m_maincpu;

View File

@ -162,10 +162,15 @@ WRITE_LINE_MEMBER(xmen_state::screen_vblank_xmen6p)
*/
for (offset = 0; offset < (0xc000 / 2); offset++)
{
m_k052109->write(offset, m_xmen6p_tilemapright[offset] & 0x00ff);
if (offset != 0x1c80 && offset != 0x1e80)
{
if (m_xmen6p_tilemap_select)
m_k052109->write(offset, m_xmen6p_tilemaprightalt[offset] & 0x00ff);
else
m_k052109->write(offset, m_xmen6p_tilemapright[offset] & 0x00ff);
}
}
renderbitmap = m_screen_right.get();
}
else
@ -180,10 +185,17 @@ WRITE_LINE_MEMBER(xmen_state::screen_vblank_xmen6p)
*/
for (offset = 0; offset < (0xc000 / 2); offset++)
{
m_k052109->write(offset, m_xmen6p_tilemapleft[offset] & 0x00ff);
{
if (m_xmen6p_tilemap_select)
{
if (offset != 0x1c80 && offset != 0x1e80)
m_k052109->write(offset, m_xmen6p_tilemapleftalt[offset] & 0x00ff);
}
else
m_k052109->write(offset, m_xmen6p_tilemapleft[offset] & 0x00ff);
}
}
renderbitmap = m_screen_left.get();
}