diff options
Diffstat (limited to 'apps/plugins/sdl/progs/quake/vgamodes.h')
| -rw-r--r-- | apps/plugins/sdl/progs/quake/vgamodes.h | 599 |
1 files changed, 599 insertions, 0 deletions
diff --git a/apps/plugins/sdl/progs/quake/vgamodes.h b/apps/plugins/sdl/progs/quake/vgamodes.h new file mode 100644 index 0000000..4d609fc --- /dev/null +++ b/apps/plugins/sdl/progs/quake/vgamodes.h @@ -0,0 +1,599 @@ +/* +Copyright (C) 1996-1997 Id Software, Inc. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// +// vgamodes.h: VGA mode set tables +// + +#include "vregset.h" + +int VGA_InitMode (viddef_t *vid, vmode_t *pcurrentmode); +void VGA_SwapBuffers (viddef_t *vid, vmode_t *pcurrentmode, vrect_t *rects); +void VGA_SetPalette (viddef_t *vid, vmode_t *pcurrentmode, + unsigned char *pal); + +/////////////////////////////////////////////////////////////////////////// +// the following base mode descriptors plus extra data together provide all +// the data needed to do VGA mode sets +/////////////////////////////////////////////////////////////////////////// + +typedef struct { + int vidbuffer; + int *pregset; +} vextra_t; + +int vrsnull[] = { + VRS_END, +}; + +int vrs320x200x256planar[] = { +// +// switch to linear, non-chain4 mode +// + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 1, + + VRS_BYTE_OUT, SC_INDEX, MEMORY_MODE, + VRS_BYTE_RMW, SC_DATA, ~0x08, 0x04, + VRS_BYTE_OUT, GC_INDEX, GRAPHICS_MODE, + VRS_BYTE_RMW, GC_DATA, ~0x13, 0x00, + VRS_BYTE_OUT, GC_INDEX, MISCELLANOUS, + VRS_BYTE_RMW, GC_DATA, ~0x02, 0x00, + + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 3, + +// +// change the CRTC from doubleword to byte mode +// + VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE, + VRS_BYTE_RMW, CRTC_DATA, ~0x40, 0x00, + VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL, + VRS_BYTE_RMW, CRTC_DATA, ~0x00, 0x40, + + VRS_END, +}; + +int vrs360x200x256planar[] = { +// +// switch to linear, non-chain4 mode +// + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 1, + + VRS_WORD_OUT, SC_INDEX, 0x0604, + VRS_BYTE_OUT, MISC_OUTPUT, 0x67, + + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 3, + +// +// unprotect CRTC0 through CRTC0 +// + VRS_BYTE_OUT, CRTC_INDEX, 0x11, + VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00, + +// +// change the CRTC from doubleword to byte mode +// + VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE, + VRS_BYTE_RMW, CRTC_DATA, ~0x40, 0x00, + VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL, + VRS_BYTE_RMW, CRTC_DATA, ~0x00, 0x40, + +// +// set up the CRT Controller +// + VRS_WORD_OUT, CRTC_INDEX, 0x6B00, + VRS_WORD_OUT, CRTC_INDEX, 0x5901, + VRS_WORD_OUT, CRTC_INDEX, 0x5A02, + VRS_WORD_OUT, CRTC_INDEX, 0x8E03, + VRS_WORD_OUT, CRTC_INDEX, 0x5E04, + VRS_WORD_OUT, CRTC_INDEX, 0x8A05, + VRS_WORD_OUT, CRTC_INDEX, 0x3013, + + VRS_END, +}; + +int vrs320x240x256planar[] = { +// +// switch to linear, non-chain4 mode +// + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 1, + + VRS_BYTE_OUT, SC_INDEX, MEMORY_MODE, + VRS_BYTE_RMW, SC_DATA, ~0x08, 0x04, + VRS_BYTE_OUT, GC_INDEX, GRAPHICS_MODE, + VRS_BYTE_RMW, GC_DATA, ~0x13, 0x00, + VRS_BYTE_OUT, GC_INDEX, MISCELLANOUS, + VRS_BYTE_RMW, GC_DATA, ~0x02, 0x00, + + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 3, + +// +// unprotect CRTC0 through CRTC0 +// + VRS_BYTE_OUT, CRTC_INDEX, 0x11, + VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00, + +// +// set up the CRT Controller +// + VRS_WORD_OUT, CRTC_INDEX, 0x0D06, + VRS_WORD_OUT, CRTC_INDEX, 0x3E07, + VRS_WORD_OUT, CRTC_INDEX, 0x4109, + VRS_WORD_OUT, CRTC_INDEX, 0xEA10, + VRS_WORD_OUT, CRTC_INDEX, 0xAC11, + VRS_WORD_OUT, CRTC_INDEX, 0xDF12, + VRS_WORD_OUT, CRTC_INDEX, 0x0014, + VRS_WORD_OUT, CRTC_INDEX, 0xE715, + VRS_WORD_OUT, CRTC_INDEX, 0x0616, + VRS_WORD_OUT, CRTC_INDEX, 0xE317, + + VRS_END, +}; + +int vrs360x240x256planar[] = { +// +// switch to linear, non-chain4 mode +// + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 1, + + VRS_WORD_OUT, SC_INDEX, 0x0604, + VRS_BYTE_OUT, MISC_OUTPUT, 0xE7, + + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 3, + +// +// unprotect CRTC0 through CRTC0 +// + VRS_BYTE_OUT, CRTC_INDEX, 0x11, + VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00, + +// +// set up the CRT Controller +// + VRS_WORD_OUT, CRTC_INDEX, 0x6B00, + VRS_WORD_OUT, CRTC_INDEX, 0x5901, + VRS_WORD_OUT, CRTC_INDEX, 0x5A02, + VRS_WORD_OUT, CRTC_INDEX, 0x8E03, + VRS_WORD_OUT, CRTC_INDEX, 0x5E04, + VRS_WORD_OUT, CRTC_INDEX, 0x8A05, + VRS_WORD_OUT, CRTC_INDEX, 0x0D06, + VRS_WORD_OUT, CRTC_INDEX, 0x3E07, + VRS_WORD_OUT, CRTC_INDEX, 0x4109, + VRS_WORD_OUT, CRTC_INDEX, 0xEA10, + VRS_WORD_OUT, CRTC_INDEX, 0xAC11, + VRS_WORD_OUT, CRTC_INDEX, 0xDF12, + VRS_WORD_OUT, CRTC_INDEX, 0x3013, + VRS_WORD_OUT, CRTC_INDEX, 0x0014, + VRS_WORD_OUT, CRTC_INDEX, 0xE715, + VRS_WORD_OUT, CRTC_INDEX, 0x0616, + VRS_WORD_OUT, CRTC_INDEX, 0xE317, + + VRS_END, +}; + +int vrs320x350x256planar[] = { +// +// switch to linear, non-chain4 mode +// + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 1, + + VRS_BYTE_OUT, SC_INDEX, MEMORY_MODE, + VRS_BYTE_RMW, SC_DATA, ~0x08, 0x04, + VRS_BYTE_OUT, GC_INDEX, GRAPHICS_MODE, + VRS_BYTE_RMW, GC_DATA, ~0x10, 0x00, + VRS_BYTE_OUT, GC_INDEX, MISCELLANOUS, + VRS_BYTE_RMW, GC_DATA, ~0x02, 0x00, + VRS_BYTE_OUT, MISC_OUTPUT, 0xA3, // 350-scan-line scan rate + + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 3, + +// +// unprotect CRTC0 through CRTC0 +// + VRS_BYTE_OUT, CRTC_INDEX, 0x11, + VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00, + +// +// stop scanning each line twice +// + VRS_BYTE_OUT, CRTC_INDEX, MAX_SCAN_LINE, + VRS_BYTE_RMW, CRTC_DATA, ~0x1F, 0x00, + +// +// change the CRTC from doubleword to byte mode +// + VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE, + VRS_BYTE_RMW, CRTC_DATA, ~0x40, 0x00, + VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL, + VRS_BYTE_RMW, CRTC_DATA, ~0x00, 0x40, + +// +// set the vertical counts for 350-scan-line mode +// + VRS_WORD_OUT, CRTC_INDEX, 0xBF06, + VRS_WORD_OUT, CRTC_INDEX, 0x1F07, + VRS_WORD_OUT, CRTC_INDEX, 0x8310, + VRS_WORD_OUT, CRTC_INDEX, 0x8511, + VRS_WORD_OUT, CRTC_INDEX, 0x5D12, + VRS_WORD_OUT, CRTC_INDEX, 0x6315, + VRS_WORD_OUT, CRTC_INDEX, 0xBA16, + + VRS_END, +}; + +int vrs360x350x256planar[] = { +// +// switch to linear, non-chain4 mode +// + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 1, + + VRS_WORD_OUT, SC_INDEX, 0x0604, + VRS_BYTE_OUT, MISC_OUTPUT, 0xA7, // 350-scan-line scan rate + + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 3, + +// +// unprotect CRTC0 through CRTC0 +// + VRS_BYTE_OUT, CRTC_INDEX, 0x11, + VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00, + +// +// stop scanning each line twice +// + VRS_BYTE_OUT, CRTC_INDEX, MAX_SCAN_LINE, + VRS_BYTE_RMW, CRTC_DATA, ~0x1F, 0x00, + +// +// change the CRTC from doubleword to byte mode +// + VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE, + VRS_BYTE_RMW, CRTC_DATA, ~0x40, 0x00, + VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL, + VRS_BYTE_RMW, CRTC_DATA, ~0x00, 0x40, + +// +// set the vertical counts for 350-scan-line mode and 360 pixels across +// + VRS_WORD_OUT, CRTC_INDEX, 0x6B00, + VRS_WORD_OUT, CRTC_INDEX, 0x5901, + VRS_WORD_OUT, CRTC_INDEX, 0x5A02, + VRS_WORD_OUT, CRTC_INDEX, 0x8E03, + VRS_WORD_OUT, CRTC_INDEX, 0x5E04, + VRS_WORD_OUT, CRTC_INDEX, 0x8A05, + VRS_WORD_OUT, CRTC_INDEX, 0xBF06, + VRS_WORD_OUT, CRTC_INDEX, 0x1F07, + VRS_WORD_OUT, CRTC_INDEX, 0x8310, + VRS_WORD_OUT, CRTC_INDEX, 0x8511, + VRS_WORD_OUT, CRTC_INDEX, 0x5D12, + VRS_WORD_OUT, CRTC_INDEX, 0x3013, + VRS_WORD_OUT, CRTC_INDEX, 0x6315, + VRS_WORD_OUT, CRTC_INDEX, 0xBA16, + + VRS_END, +}; + +int vrs320x400x256planar[] = { +// +// switch to linear, non-chain4 mode +// + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 1, + + + VRS_BYTE_OUT, SC_INDEX, MEMORY_MODE, + VRS_BYTE_RMW, SC_DATA, ~0x08, 0x04, + VRS_BYTE_OUT, GC_INDEX, GRAPHICS_MODE, + VRS_BYTE_RMW, GC_DATA, ~0x10, 0x00, + VRS_BYTE_OUT, GC_INDEX, MISCELLANOUS, + VRS_BYTE_RMW, GC_DATA, ~0x02, 0x00, + + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 3, + +// +// stop scanning each line twice +// + VRS_BYTE_OUT, CRTC_INDEX, MAX_SCAN_LINE, + VRS_BYTE_RMW, CRTC_DATA, ~0x1F, 0x00, + +// +// change the CRTC from doubleword to byte mode +// + VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE, + VRS_BYTE_RMW, CRTC_DATA, ~0x40, 0x00, + VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL, + VRS_BYTE_RMW, CRTC_DATA, ~0x00, 0x40, + + VRS_END, +}; + +int vrs360x400x256planar[] = { +// +// switch to linear, non-chain4 mode +// + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 1, + + VRS_WORD_OUT, SC_INDEX, 0x0604, + VRS_BYTE_OUT, MISC_OUTPUT, 0x67, + + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 3, + +// +// unprotect CRTC0 through CRTC0 +// + VRS_BYTE_OUT, CRTC_INDEX, 0x11, + VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00, + +// +// stop scanning each line twice +// + VRS_BYTE_OUT, CRTC_INDEX, MAX_SCAN_LINE, + VRS_BYTE_RMW, CRTC_DATA, ~0x1F, 0x00, + +// +// change the CRTC from doubleword to byte mode +// + VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE, + VRS_BYTE_RMW, CRTC_DATA, ~0x40, 0x00, + VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL, + VRS_BYTE_RMW, CRTC_DATA, ~0x00, 0x40, + +// +// set up the CRT Controller +// + VRS_WORD_OUT, CRTC_INDEX, 0x6B00, + VRS_WORD_OUT, CRTC_INDEX, 0x5901, + VRS_WORD_OUT, CRTC_INDEX, 0x5A02, + VRS_WORD_OUT, CRTC_INDEX, 0x8E03, + VRS_WORD_OUT, CRTC_INDEX, 0x5E04, + VRS_WORD_OUT, CRTC_INDEX, 0x8A05, + VRS_WORD_OUT, CRTC_INDEX, 0x3013, + + VRS_END, +}; + +int vrs320x480x256planar[] = { +// +// switch to linear, non-chain4 mode +// + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 1, + + VRS_BYTE_OUT, SC_INDEX, MEMORY_MODE, + VRS_BYTE_RMW, SC_DATA, ~0x08, 0x04, + VRS_BYTE_OUT, GC_INDEX, GRAPHICS_MODE, + VRS_BYTE_RMW, GC_DATA, ~0x10, 0x00, + VRS_BYTE_OUT, GC_INDEX, MISCELLANOUS, + VRS_BYTE_RMW, GC_DATA, ~0x02, 0x00, + + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 3, + +// +// unprotect CRTC0 through CRTC0 +// + VRS_BYTE_OUT, CRTC_INDEX, 0x11, + VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00, + +// +// stop scanning each line twice +// + VRS_BYTE_OUT, CRTC_INDEX, MAX_SCAN_LINE, + VRS_BYTE_RMW, CRTC_DATA, ~0x1F, 0x00, + +// +// change the CRTC from doubleword to byte mode +// + VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE, + VRS_BYTE_RMW, CRTC_DATA, ~0x40, 0x00, + VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL, + VRS_BYTE_RMW, CRTC_DATA, ~0x00, 0x40, + +// +// set up the CRT Controller +// + VRS_WORD_OUT, CRTC_INDEX, 0x0D06, + VRS_WORD_OUT, CRTC_INDEX, 0x3E07, + VRS_WORD_OUT, CRTC_INDEX, 0xEA10, + VRS_WORD_OUT, CRTC_INDEX, 0xAC11, + VRS_WORD_OUT, CRTC_INDEX, 0xDF12, + VRS_WORD_OUT, CRTC_INDEX, 0xE715, + VRS_WORD_OUT, CRTC_INDEX, 0x0616, + + VRS_END, +}; + +int vrs360x480x256planar[] = { +// +// switch to linear, non-chain4 mode +// + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 1, + + VRS_WORD_OUT, SC_INDEX, 0x0604, + VRS_BYTE_OUT, MISC_OUTPUT, 0xE7, + + VRS_BYTE_OUT, SC_INDEX, SYNC_RESET, + VRS_BYTE_OUT, SC_DATA, 3, + +// +// unprotect CRTC0 through CRTC0 +// + VRS_BYTE_OUT, CRTC_INDEX, 0x11, + VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00, + +// +// set up the CRT Controller +// + VRS_WORD_OUT, CRTC_INDEX, 0x6B00, + VRS_WORD_OUT, CRTC_INDEX, 0x5901, + VRS_WORD_OUT, CRTC_INDEX, 0x5A02, + VRS_WORD_OUT, CRTC_INDEX, 0x8E03, + VRS_WORD_OUT, CRTC_INDEX, 0x5E04, + VRS_WORD_OUT, CRTC_INDEX, 0x8A05, + VRS_WORD_OUT, CRTC_INDEX, 0x0D06, + VRS_WORD_OUT, CRTC_INDEX, 0x3E07, + VRS_WORD_OUT, CRTC_INDEX, 0x4009, + VRS_WORD_OUT, CRTC_INDEX, 0xEA10, + VRS_WORD_OUT, CRTC_INDEX, 0xAC11, + VRS_WORD_OUT, CRTC_INDEX, 0xDF12, + VRS_WORD_OUT, CRTC_INDEX, 0x3013, + VRS_WORD_OUT, CRTC_INDEX, 0x0014, + VRS_WORD_OUT, CRTC_INDEX, 0xE715, + VRS_WORD_OUT, CRTC_INDEX, 0x0616, + VRS_WORD_OUT, CRTC_INDEX, 0xE317, + + VRS_END, +}; + +// +// extra VGA-specific data for vgavidmodes +// +vextra_t extra320x200x256linear = { + 1, vrsnull +}; +vextra_t extra320x200x256planar = { + 1, vrs320x200x256planar +}; +vextra_t extra360x200x256planar = { + 1, vrs360x200x256planar +}; +vextra_t extra320x240x256planar = { + 1, vrs320x240x256planar +}; +vextra_t extra360x240x256planar = { + 1, vrs360x240x256planar +}; +vextra_t extra320x350x256planar = { + 1, vrs320x350x256planar +}; +vextra_t extra360x350x256planar = { + 1, vrs360x350x256planar +}; +vextra_t extra320x400x256planar = { + 1, vrs320x400x256planar +}; +vextra_t extra360x400x256planar = { + 1, vrs360x400x256planar +}; +vextra_t extra320x480x256planar = { + 1, vrs320x480x256planar +}; +vextra_t extra360x480x256planar = { + 1, vrs360x480x256planar +}; + +// +// base mode descriptors, in ascending order of number of pixels +// + +vmode_t vgavidmodes[] = { +{ + NULL, + "320x200", " ***** standard VGA modes ***** ", + 320, 200, (200.0/320.0)*(320.0/240.0), 320, 0, 1, &extra320x200x256linear, + VGA_InitMode, VGA_SwapBuffers, VGA_SetPalette, + VGA_BeginDirectRect, VGA_EndDirectRect +}, +{ + NULL, + "320x200", " ***** Mode X-style modes ***** ", + 320, 200, (200.0/320.0)*(320.0/240.0), 320, 1, 1, &extra320x200x256planar, + VGA_InitMode, VGA_SwapBuffers, VGA_SetPalette, + VGA_BeginDirectRect, VGA_EndDirectRect +}, +{ + NULL, + "360x200", NULL, 360, 200, (200.0/360.0)*(320.0/240.0), + 384, 1, 1, &extra360x200x256planar, VGA_InitMode, + VGA_SwapBuffers, + VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect +}, +{ + NULL, + "320x240", NULL, 320, 240, (240.0/320.0)*(320.0/240.0), + 320, 1, 1, &extra320x240x256planar, VGA_InitMode, + VGA_SwapBuffers, + VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect +}, +{ + NULL, + "360x240", NULL, 360, 240, (240.0/360.0)*(320.0/240.0), + 384, 1, 1, &extra360x240x256planar, + VGA_InitMode, VGA_SwapBuffers, VGA_SetPalette, + VGA_BeginDirectRect, VGA_EndDirectRect +}, +{ + NULL, + "320x350", NULL, 320, 350, (350.0/320.0)*(320.0/240.0), + 320, 1, 1, &extra320x350x256planar, VGA_InitMode, + VGA_SwapBuffers, + VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect +}, +{ + NULL, + "360x350", NULL, 360, 350, (350.0/360.0)*(320.0/240.0), + 384, 1, 1, &extra360x350x256planar, VGA_InitMode, + VGA_SwapBuffers, + VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect +}, +{ + NULL, + "320x400", NULL, 320, 400, (400.0/320.0)*(320.0/240.0), 320, + 1, 1, &extra320x400x256planar, VGA_InitMode, + VGA_SwapBuffers, + VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect +}, +{ + NULL, + "360x400", NULL, 360, 400, (400.0/360.0)*(320.0/240.0), + 384, 1, 1, &extra360x400x256planar, VGA_InitMode, + VGA_SwapBuffers, + VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect +}, +{ + NULL, + "320x480", NULL, 320, 480, (480.0/320.0)*(320.0/240.0), + 320, 1, 1, &extra320x480x256planar, VGA_InitMode, + VGA_SwapBuffers, + VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect +}, +{ + NULL, + "360x480", NULL, 360, 480, (480.0/360.0)*(320.0/240.0), + 384, 1, 1, &extra360x480x256planar, VGA_InitMode, + VGA_SwapBuffers, + VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect +}, +}; + |