diff --git a/src/chipset/cs8230.c b/src/chipset/cs8230.c index bb13b353e..a0f64d55c 100644 --- a/src/chipset/cs8230.c +++ b/src/chipset/cs8230.c @@ -142,6 +142,11 @@ static void cs8230_write, NULL, NULL, cs8230); + if (mem_size > 768) { + mem_mapping_set_addr(&ram_mid_mapping, 0xa0000, mem_size > 1024 ? 0x60000 : 0x20000 + (mem_size - 768) * 1024); + mem_mapping_set_exec(&ram_mid_mapping, ram + 0xa0000); + } + return cs8230; } diff --git a/src/video/vid_cl54xx.c b/src/video/vid_cl54xx.c index 07ffad50a..94f091350 100644 --- a/src/video/vid_cl54xx.c +++ b/src/video/vid_cl54xx.c @@ -1136,6 +1136,40 @@ gd54xx_recalctimings(svga_t *svga) svga->map8 = video_8to32; svga->render = svga_render_8bpp_highres; break; + + case 0xf: + switch (svga->seqregs[7] & CIRRUS_SR7_BPP_MASK) { + case CIRRUS_SR7_BPP_32: + if (svga->crtc[0x27] >= CIRRUS_ID_CLGD5430) { + svga->bpp = 32; + svga->render = svga_render_32bpp_highres; + svga->rowoffset *= 2; + } + break; + + case CIRRUS_SR7_BPP_24: + svga->bpp = 24; + svga->render = svga_render_24bpp_highres; + break; + + case CIRRUS_SR7_BPP_16: + if ((svga->crtc[0x27] >= CIRRUS_ID_CLGD5428) || (svga->crtc[0x27] == CIRRUS_ID_CLGD5426)) { + svga->bpp = 16; + svga->render = svga_render_16bpp_highres; + } + break; + + case CIRRUS_SR7_BPP_16_DOUBLEVCLK: + svga->bpp = 16; + svga->render = svga_render_16bpp_highres; + break; + + case CIRRUS_SR7_BPP_8: + svga->bpp = 8; + svga->render = svga_render_8bpp_highres; + break; + } + break; } } else { svga->bpp = 15;