amiga/amigaaga.cpp: hookup bplam for single playfield mode

This commit is contained in:
angelosa 2025-01-28 11:05:06 +01:00
parent ec5f551b1f
commit 625488ecec

View File

@ -464,6 +464,7 @@ void amiga_state::aga_render_scanline(bitmap_rgb32 &bitmap, int scanline)
int pf1pri = 0, pf2pri = 0;
int planes = 0;
int raw_scanline = 0;
u8 bplam = 0;
uint32_t *dst = nullptr;
int ebitoffs = 0, obitoffs = 0;
@ -628,6 +629,11 @@ void amiga_state::aga_render_scanline(bitmap_rgb32 &bitmap, int scanline)
// In practice we need to separate bitplane delays & drawing first.
//shres = CUSTOM_REG(REG_BPLCON0) & 0x0040;
// bplam applies xor to bitplane colors (i.e. acting as pal bank)
// - aladdin, status bar in gameplay
// TODO: implement for ham and dualpf, below
bplam = CUSTOM_REG(REG_BPLCON4) >> 8;
// In AGA Extra Half-Brite applies if this condition is satisfied
// (bit 9 of BPLCON2 is KILLEHB)
// cfr. bblow_a main menu
@ -934,8 +940,8 @@ void amiga_state::aga_render_scanline(bitmap_rgb32 &bitmap, int scanline)
{
// TODO: does it applies to sprites too?
rgb_t *dst_palette = ehb ? m_aga_ehb_palette : aga_palette;
dst[x*2+0] = dst_palette[pfpix0];
dst[x*2+1] = dst_palette[pfpix1];
dst[x*2+0] = dst_palette[pfpix0 ^ bplam];
dst[x*2+1] = dst_palette[pfpix1 ^ bplam];
}
}
}