- VBE 4bpp fixes (line offset + plane address shift)

- maximum VBE screen size updated
This commit is contained in:
Volker Ruppert 2006-08-15 16:48:23 +00:00
parent 92c1720e3e
commit c0bee9324d
2 changed files with 20 additions and 19 deletions

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// $Id: vga.cc,v 1.134 2006-08-14 20:31:18 vruppert Exp $ // $Id: vga.cc,v 1.135 2006-08-15 16:48:23 vruppert Exp $
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2002 MandrakeSoft S.A. // Copyright (C) 2002 MandrakeSoft S.A.
@ -1474,7 +1474,7 @@ void bx_vga_c::write(Bit32u address, Bit32u value, unsigned io_len, bx_bool no_l
case 0x14: case 0x14:
case 0x17: case 0x17:
#if BX_SUPPORT_VBE #if BX_SUPPORT_VBE
if (!BX_VGA_THIS s.vbe_enabled) if (!BX_VGA_THIS s.vbe_enabled || (BX_VGA_THIS s.vbe_bpp == VBE_DISPI_BPP_4))
#endif #endif
{ {
// Line offset change // Line offset change
@ -1904,10 +1904,10 @@ void bx_vga_c::update(void)
#if BX_SUPPORT_VBE #if BX_SUPPORT_VBE
if (BX_VGA_THIS s.vbe_enabled) if (BX_VGA_THIS s.vbe_enabled)
{ {
plane0 = &BX_VGA_THIS s.vbe_memory[0<<20]; plane0 = &BX_VGA_THIS s.vbe_memory[0<<VBE_DISPI_4BPP_PLANE_SHIFT];
plane1 = &BX_VGA_THIS s.vbe_memory[1<<20]; plane1 = &BX_VGA_THIS s.vbe_memory[1<<VBE_DISPI_4BPP_PLANE_SHIFT];
plane2 = &BX_VGA_THIS s.vbe_memory[2<<20]; plane2 = &BX_VGA_THIS s.vbe_memory[2<<VBE_DISPI_4BPP_PLANE_SHIFT];
plane3 = &BX_VGA_THIS s.vbe_memory[3<<20]; plane3 = &BX_VGA_THIS s.vbe_memory[3<<VBE_DISPI_4BPP_PLANE_SHIFT];
start_addr = BX_VGA_THIS s.vbe_virtual_start; start_addr = BX_VGA_THIS s.vbe_virtual_start;
line_compare = 0xffff; line_compare = 0xffff;
} }
@ -2245,10 +2245,10 @@ Bit8u bx_vga_c::mem_read(Bit32u addr)
#if BX_SUPPORT_VBE #if BX_SUPPORT_VBE
if (BX_VGA_THIS s.vbe_enabled) if (BX_VGA_THIS s.vbe_enabled)
{ {
plane0 = &BX_VGA_THIS s.vbe_memory[(0<<20) + (BX_VGA_THIS s.vbe_bank<<16)]; plane0 = &BX_VGA_THIS s.vbe_memory[(0<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS s.vbe_bank<<16)];
plane1 = &BX_VGA_THIS s.vbe_memory[(1<<20) + (BX_VGA_THIS s.vbe_bank<<16)]; plane1 = &BX_VGA_THIS s.vbe_memory[(1<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS s.vbe_bank<<16)];
plane2 = &BX_VGA_THIS s.vbe_memory[(2<<20) + (BX_VGA_THIS s.vbe_bank<<16)]; plane2 = &BX_VGA_THIS s.vbe_memory[(2<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS s.vbe_bank<<16)];
plane3 = &BX_VGA_THIS s.vbe_memory[(3<<20) + (BX_VGA_THIS s.vbe_bank<<16)]; plane3 = &BX_VGA_THIS s.vbe_memory[(3<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS s.vbe_bank<<16)];
} }
else else
#endif #endif
@ -2458,10 +2458,10 @@ void bx_vga_c::mem_write(Bit32u addr, Bit8u value)
#if BX_SUPPORT_VBE #if BX_SUPPORT_VBE
if (BX_VGA_THIS s.vbe_enabled) if (BX_VGA_THIS s.vbe_enabled)
{ {
plane0 = &BX_VGA_THIS s.vbe_memory[(0<<20) + (BX_VGA_THIS s.vbe_bank<<16)]; plane0 = &BX_VGA_THIS s.vbe_memory[(0<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS s.vbe_bank<<16)];
plane1 = &BX_VGA_THIS s.vbe_memory[(1<<20) + (BX_VGA_THIS s.vbe_bank<<16)]; plane1 = &BX_VGA_THIS s.vbe_memory[(1<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS s.vbe_bank<<16)];
plane2 = &BX_VGA_THIS s.vbe_memory[(2<<20) + (BX_VGA_THIS s.vbe_bank<<16)]; plane2 = &BX_VGA_THIS s.vbe_memory[(2<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS s.vbe_bank<<16)];
plane3 = &BX_VGA_THIS s.vbe_memory[(3<<20) + (BX_VGA_THIS s.vbe_bank<<16)]; plane3 = &BX_VGA_THIS s.vbe_memory[(3<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS s.vbe_bank<<16)];
} }
else else
#endif #endif

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// $Id: vga.h,v 1.55 2006-08-09 17:52:06 vruppert Exp $ // $Id: vga.h,v 1.56 2006-08-15 16:48:23 vruppert Exp $
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2002 MandrakeSoft S.A. // Copyright (C) 2002 MandrakeSoft S.A.
@ -48,12 +48,13 @@
#if BX_SUPPORT_VBE #if BX_SUPPORT_VBE
#define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB 8 #define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB 8
#define VBE_DISPI_4BPP_PLANE_SHIFT 21
#define VBE_DISPI_BANK_ADDRESS 0xA0000 #define VBE_DISPI_BANK_ADDRESS 0xA0000
#define VBE_DISPI_BANK_SIZE_KB 64 #define VBE_DISPI_BANK_SIZE_KB 64
#define VBE_DISPI_MAX_XRES 1024 #define VBE_DISPI_MAX_XRES 1600
#define VBE_DISPI_MAX_YRES 768 #define VBE_DISPI_MAX_YRES 1200
#define VBE_DISPI_MAX_BPP 32 #define VBE_DISPI_MAX_BPP 32
#define VBE_DISPI_IOPORT_INDEX 0x01CE #define VBE_DISPI_IOPORT_INDEX 0x01CE
@ -96,8 +97,8 @@
#define VBE_DISPI_LFB_PHYSICAL_ADDRESS 0xE0000000 #define VBE_DISPI_LFB_PHYSICAL_ADDRESS 0xE0000000
#define VBE_DISPI_TOTAL_VIDEO_MEMORY_KB (VBE_DISPI_TOTAL_VIDEO_MEMORY_MB * 1024) #define VBE_DISPI_TOTAL_VIDEO_MEMORY_KB (VBE_DISPI_TOTAL_VIDEO_MEMORY_MB * 1024)
#define VBE_DISPI_TOTAL_VIDEO_MEMORY_BYTES (VBE_DISPI_TOTAL_VIDEO_MEMORY_KB * 1024) #define VBE_DISPI_TOTAL_VIDEO_MEMORY_BYTES (VBE_DISPI_TOTAL_VIDEO_MEMORY_KB * 1024)
#define BX_MAX_XRES VBE_DISPI_MAX_XRES #define BX_MAX_XRES VBE_DISPI_MAX_XRES
#define BX_MAX_YRES VBE_DISPI_MAX_YRES #define BX_MAX_YRES VBE_DISPI_MAX_YRES