summaryrefslogtreecommitdiffstats
path: root/qemu/roms/vgabios/vbetables-gen.c
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/vgabios/vbetables-gen.c')
-rw-r--r--qemu/roms/vgabios/vbetables-gen.c261
1 files changed, 0 insertions, 261 deletions
diff --git a/qemu/roms/vgabios/vbetables-gen.c b/qemu/roms/vgabios/vbetables-gen.c
deleted file mode 100644
index 550935a72..000000000
--- a/qemu/roms/vgabios/vbetables-gen.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/* Generate the VGABIOS VBE Tables */
-#include <stdlib.h>
-#include <stdio.h>
-
-#define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB 16
-
-typedef struct {
- int width;
- int height;
- int depth;
- int mode;
-} ModeInfo;
-
-ModeInfo modes[] = {
- /* standard VESA modes */
-{ 640, 400, 8 , 0x100},
-{ 640, 480, 8 , 0x101},
-{ 800, 600, 4 , 0x102},
-{ 800, 600, 8 , 0x103},
-{ 1024, 768, 4 , 0x104},
-{ 1024, 768, 8 , 0x105},
-{ 1280, 1024, 4 , 0x106},
-{ 1280, 1024, 8 , 0x107},
-{ 320, 200, 15 , 0x10D},
-{ 320, 200, 16 , 0x10E},
-{ 320, 200, 24 , 0x10F},
-{ 640, 480, 15 , 0x110},
-{ 640, 480, 16 , 0x111},
-{ 640, 480, 24 , 0x112},
-{ 800, 600, 15 , 0x113},
-{ 800, 600, 16 , 0x114},
-{ 800, 600, 24 , 0x115},
-{ 1024, 768, 15 , 0x116},
-{ 1024, 768, 16 , 0x117},
-{ 1024, 768, 24 , 0x118},
-{ 1280, 1024, 15 , 0x119},
-{ 1280, 1024, 16 , 0x11A},
-{ 1280, 1024, 24 , 0x11B},
-{ 1600, 1200, 8 , 0x11C},
-{ 1600, 1200, 15 , 0x11D},
-{ 1600, 1200, 16 , 0x11E},
-{ 1600, 1200, 24 , 0x11F},
-
- /* BOCHS/PLEX86 'own' mode numbers */
-{ 320, 200, 32 , 0x140},
-{ 640, 400, 32 , 0x141},
-{ 640, 480, 32 , 0x142},
-{ 800, 600, 32 , 0x143},
-{ 1024, 768, 32 , 0x144},
-{ 1280, 1024, 32 , 0x145},
-{ 320, 200, 8 , 0x146},
-{ 1600, 1200, 32 , 0x147},
-{ 1152, 864, 8 , 0x148},
-{ 1152, 864, 15 , 0x149},
-{ 1152, 864, 16 , 0x14a},
-{ 1152, 864, 24 , 0x14b},
-{ 1152, 864, 32 , 0x14c},
-{ 1280, 800, 16 , 0x178},
-{ 1280, 800, 24 , 0x179},
-{ 1280, 800, 32 , 0x17a},
-{ 1280, 960, 16 , 0x17b},
-{ 1280, 960, 24 , 0x17c},
-{ 1280, 960, 32 , 0x17d},
-{ 1440, 900, 16 , 0x17e},
-{ 1440, 900, 24 , 0x17f},
-{ 1440, 900, 32 , 0x180},
-{ 1400, 1050, 16 , 0x181},
-{ 1400, 1050, 24 , 0x182},
-{ 1400, 1050, 32 , 0x183},
-{ 1680, 1050, 16 , 0x184},
-{ 1680, 1050, 24 , 0x185},
-{ 1680, 1050, 32 , 0x186},
-{ 1920, 1200, 16 , 0x187},
-{ 1920, 1200, 24 , 0x188},
-{ 1920, 1200, 32 , 0x189},
-{ 2560, 1600, 16 , 0x18a},
-{ 2560, 1600, 24 , 0x18b},
-{ 2560, 1600, 32 , 0x18c},
-{ 0, },
-};
-
-int main(int argc, char **argv)
-{
- const ModeInfo *pm;
- int pages, pitch;
- int r_size, r_pos, g_size, g_pos, b_size, b_pos, a_size, a_pos;
- const char *str;
- long vram_size = VBE_DISPI_TOTAL_VIDEO_MEMORY_MB * 1024 * 1024;
-
- printf("/* THIS FILE IS AUTOMATICALLY GENERATED - DO NOT EDIT */\n\n");
- printf("#define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB %d\n\n", VBE_DISPI_TOTAL_VIDEO_MEMORY_MB);
- printf("static ModeInfoListItem mode_info_list[]=\n");
- printf("{\n");
- for (pm = modes; pm->mode != 0; pm++) {
- if (pm->depth == 4)
- pitch = (pm->width + 7) / 8;
- else
- pitch = pm->width * ((pm->depth + 7) / 8);
- pages = vram_size / (pm->height * pitch);
- if (pages > 0) {
- printf("{ 0x%04x, /* %dx%dx%d */\n",
- pm->mode, pm->width, pm->height, pm->depth);
- if (pm->depth == 4)
- printf("{ /*Bit16u ModeAttributes*/ %s,\n",
- "VBE_MODE_ATTRIBUTE_SUPPORTED | "
- "VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | "
- "VBE_MODE_ATTRIBUTE_COLOR_MODE | "
- "VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT | "
- "VBE_MODE_ATTRIBUTE_GRAPHICS_MODE");
- else
- printf("{ /*Bit16u ModeAttributes*/ %s,\n",
- "VBE_MODE_ATTRIBUTE_SUPPORTED | "
- "VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | "
- "VBE_MODE_ATTRIBUTE_COLOR_MODE | "
- "VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | "
- "VBE_MODE_ATTRIBUTE_GRAPHICS_MODE");
- printf("/*Bit8u WinAAttributes*/ %s,\n",
- "VBE_WINDOW_ATTRIBUTE_RELOCATABLE | "
- "VBE_WINDOW_ATTRIBUTE_READABLE | "
- "VBE_WINDOW_ATTRIBUTE_WRITEABLE");
-
- printf("/*Bit8u WinBAttributes*/ %d,\n", 0);
-
- printf("/*Bit16u WinGranularity*/ %s,\n", "VBE_DISPI_BANK_SIZE_KB");
-
- printf("/*Bit16u WinSize*/ %s,\n", "VBE_DISPI_BANK_SIZE_KB");
-
- printf("/*Bit16u WinASegment*/ %s,\n", "VGAMEM_GRAPH");
-
- printf("/*Bit16u WinBSegment*/ 0x%04x,\n", 0);
-
- printf("/*Bit32u WinFuncPtr*/ %d,\n", 0);
-
- printf("/*Bit16u BytesPerScanLine*/ %d,\n", pitch);
-
- // Mandatory information for VBE 1.2 and above
- printf("/*Bit16u XResolution*/ %d,\n", pm->width);
- printf("/*Bit16u YResolution*/ %d,\n", pm->height);
- printf("/*Bit8u XCharSize*/ %d,\n", 8);
- printf("/*Bit8u YCharSize*/ %d,\n", 16);
- if (pm->depth == 4) {
- printf("/*Bit8u NumberOfPlanes*/ %d,\n", 4);
- } else {
- printf("/*Bit8u NumberOfPlanes*/ %d,\n", 1);
- }
- printf("/*Bit8u BitsPerPixel*/ %d,\n", pm->depth);
- printf("/*Bit8u NumberOfBanks*/ %d,\n",
- (pm->height * pitch + 65535) / 65536);
-
- if (pm->depth == 4)
- str = "VBE_MEMORYMODEL_PLANAR";
- else if (pm->depth == 8)
- str = "VBE_MEMORYMODEL_PACKED_PIXEL";
- else
- str = "VBE_MEMORYMODEL_DIRECT_COLOR";
- printf("/*Bit8u MemoryModel*/ %s,\n", str);
- printf("/*Bit8u BankSize*/ %d,\n", 0);
- if (pm->depth == 4)
- printf("/*Bit8u NumberOfImagePages*/ %d,\n", (pages / 4) - 1);
- else
- printf("/*Bit8u NumberOfImagePages*/ %d,\n", pages - 1);
- printf("/*Bit8u Reserved_page*/ %d,\n", 0);
-
- // Direct Color fields (required for direct/6 and YUV/7 memory models)
- switch(pm->depth) {
- case 15:
- r_size = 5;
- r_pos = 10;
- g_size = 5;
- g_pos = 5;
- b_size = 5;
- b_pos = 0;
- a_size = 1;
- a_pos = 15;
- break;
- case 16:
- r_size = 5;
- r_pos = 11;
- g_size = 6;
- g_pos = 5;
- b_size = 5;
- b_pos = 0;
- a_size = 0;
- a_pos = 0;
- break;
- case 24:
- r_size = 8;
- r_pos = 16;
- g_size = 8;
- g_pos = 8;
- b_size = 8;
- b_pos = 0;
- a_size = 0;
- a_pos = 0;
- break;
- case 32:
- r_size = 8;
- r_pos = 16;
- g_size = 8;
- g_pos = 8;
- b_size = 8;
- b_pos = 0;
- a_size = 8;
- a_pos = 24;
- break;
- default:
- r_size = 0;
- r_pos = 0;
- g_size = 0;
- g_pos = 0;
- b_size = 0;
- b_pos = 0;
- a_size = 0;
- a_pos = 0;
- break;
- }
-
- printf("/*Bit8u RedMaskSize*/ %d,\n", r_size);
- printf("/*Bit8u RedFieldPosition*/ %d,\n", r_pos);
- printf("/*Bit8u GreenMaskSize*/ %d,\n", g_size);
- printf("/*Bit8u GreenFieldPosition*/ %d,\n", g_pos);
- printf("/*Bit8u BlueMaskSize*/ %d,\n", b_size);
- printf("/*Bit8u BlueFieldPosition*/ %d,\n", b_pos);
- printf("/*Bit8u RsvdMaskSize*/ %d,\n", a_size);
- printf("/*Bit8u RsvdFieldPosition*/ %d,\n", a_pos);
- if (pm->depth == 32)
- printf("/*Bit8u DirectColorModeInfo*/ %s,\n",
- "VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE");
- else
- printf("/*Bit8u DirectColorModeInfo*/ %s,\n", "0");
-
-// Mandatory information for VBE 2.0 and above
- if (pm->depth > 4)
- printf("/*Bit32u PhysBasePtr*/ %s,\n",
- "VBE_DISPI_LFB_PHYSICAL_ADDRESS");
- else
- printf("/*Bit32u PhysBasePtr*/ %s,\n", "0");
- printf("/*Bit32u OffScreenMemOffset*/ %d,\n", 0);
- printf("/*Bit16u OffScreenMemSize*/ %d,\n", 0);
- // Mandatory information for VBE 3.0 and above
- printf("/*Bit16u LinBytesPerScanLine*/ %d,\n", pitch);
- printf("/*Bit8u BnkNumberOfPages*/ %d,\n", 0);
- printf("/*Bit8u LinNumberOfPages*/ %d,\n", 0);
- printf("/*Bit8u LinRedMaskSize*/ %d,\n", r_size);
- printf("/*Bit8u LinRedFieldPosition*/ %d,\n", r_pos);
- printf("/*Bit8u LinGreenMaskSize*/ %d,\n", g_size);
- printf("/*Bit8u LinGreenFieldPosition*/ %d,\n", g_pos);
- printf("/*Bit8u LinBlueMaskSize*/ %d,\n", b_size);
- printf("/*Bit8u LinBlueFieldPosition*/ %d,\n", b_pos);
- printf("/*Bit8u LinRsvdMaskSize*/ %d,\n", a_size);
- printf("/*Bit8u LinRsvdFieldPosition*/ %d,\n", a_pos);
- printf("/*Bit32u MaxPixelClock*/ %d,\n", 0);
- printf("} },\n");
- }
- }
- printf("{ VBE_VESA_MODE_END_OF_LIST,\n");
- printf("{ 0,\n");
- printf("} },\n");
- printf("};\n");
- return 0;
-}