UINT32 mu100_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { const UINT8 *render = m_lcd->render(); const UINT8 *src = ymmu100_bkg + 15; for(int y=0; y<241; y++) { UINT32 *pix = reinterpret_cast<UINT32 *>(bitmap.raw_pixptr(y)); for(int x=0; x<800; x++) { float light = lightlevel(src, render); UINT32 col = (int(0xef*light) << 16) | (int(0xf5*light) << 8); *pix++ = col; src += 3; } for(int x=800; x<900; x++) *pix++ = 0; } for(int i=0; i<6; i++) if(cur_ic32 & (1 << (i == 5 ? 7 : i))) { int x = 830 + 40*(i & 1); int y = 55 + 65*(i >> 1); for(int yy=-9; yy <= 9; yy++) { int dx = int(sqrt((float)(99-yy*yy))); UINT32 *pix = reinterpret_cast<UINT32 *>(bitmap.raw_pixptr(y+yy)) + (x-dx); for(int xx=0; xx<2*dx+1; xx++) *pix++ = 0x00ff00; } }