📄 grengine.cpp
字号:
/* GrEngine.cpp - Draws the emulated screen, and various GUI elements.
See Graphics.hpp for more info, if there is any...
*/
#include "Common.hpp"
#include <STDARG.H>
#include "GrEngine.hpp"
#include "FileMan.hpp"
#include "GUI.hpp"
#include "CPU.hpp"
#include "SPC700.hpp"
boolean fpucopy = false;
int vidmode = 0;
// Video modes:
// 0=Text (160x25)
// 1=Chained mode Q (256x256)
// 2=Chained Mode 13H (320x200)
// 3=Original Mode X (320x240)
// 4=GUI Normal (360x240)
// 5=GUI Tall (360x360)
int xres = 160, yres = 25;
byte vs [144000]; // Virtual screen, copied to real screen every frame.
// While the SNES is being emulated the size (xres/yres) is always 256x256 no matter what the video mode is.
byte snesscreen [65536];
// SNES virtual screen... copied from normal virtual screen when GUI is entered so screen shot is saved.
boolean waitretrace = false, leadingedge = false;
byte curcolor = 15;
unsigned char width8 [128] = {
7, 7, 7, 6, 6, 7, 7, 7, // 0-7
7, 8, 7, 7, 7, 7, 7, 7, // 8-15
5, 5, 6, 7, 7, 7, 7, 7, // 16-23
6, 6, 7, 7, 7, 8, 8, 8, // 24-31
4, 2, 3, 6, 6, 5, 6, 3, // 32-39
3, 3, 6, 6, 3, 5, 2, 5, // 40-47
5, 4, 5, 4, 5, 5, 5, 4, // 48-55
5, 5, 2, 3, 5, 4, 5, 5, // 56-63
6, 6, 5, 5, 5, 5, 5, 6, // 64-71
5, 4, 5, 5, 5, 8, 6, 6, // 72
5, 6, 5, 5, 6, 6, 6, 7, //
6, 6, 5, 3, 5, 3, 4, 4, //
3, 5, 5, 4, 5, 5, 4, 5, //
5, 2, 3, 4, 2, 6, 5, 5, //
5, 6, 5, 5, 4, 5, 6, 6, // 112-119
5, 5, 5, 4, 2, 4, 6, 6, // 120-127
};
unsigned char font8 [128] [8] = {
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0
{ 0x78, 0x84, 0xB4, 0xA4, 0xB4, 0x84, 0x78, 0x00 }, // 1
{ 0x7C, 0x82, 0xB2, 0xAA, 0xB2, 0xAA, 0x82, 0x7C }, // 2
{ 0x50, 0xF8, 0xF8, 0xF8, 0x70, 0x20, 0x00, 0x00 }, // 3
{ 0x20, 0x70, 0xF8, 0xF8, 0x70, 0x20, 0x00, 0x00 }, // 4
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 5
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 6
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 7
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 8
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 9
{ 0x00, 0x24, 0x64, 0xFC, 0x60, 0x20, 0x00, 0x00 }, // 10
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 11
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 12
{ 0x00, 0x24, 0x64, 0xFC, 0x60, 0x20, 0x00, 0x00 }, // 13
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 14
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 15
{ 0x80, 0xC0, 0xE0, 0xF0, 0xE0, 0xC0, 0x80, 0x00 }, // 16
{ 0x10, 0x30, 0x70, 0xF0, 0x70, 0x30, 0x10, 0x00 }, // 17
{ 0x20, 0x70, 0xF8, 0x20, 0xF8, 0x70, 0x20, 0x00 }, // 18
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 19
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 20
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 21
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 22
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 23
{ 0x20, 0x70, 0xF8, 0x20, 0x20, 0x20, 0x00, 0x00 }, // 24
{ 0x20, 0x20, 0x20, 0xF8, 0x70, 0x20, 0x00, 0x00 }, // 25
{ 0x00, 0x10, 0x18, 0xFC, 0x18, 0x10, 0x00, 0x00 }, // 26
{ 0x00, 0x20, 0x60, 0xFC, 0x60, 0x20, 0x00, 0x00 }, // 27
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 28
{ 0x00, 0x28, 0x6C, 0xFE, 0x6C, 0x28, 0x00, 0x00 }, // 29
{ 0x00, 0x00, 0x10, 0x38, 0x7C, 0xFE, 0x00, 0x00 }, // 30
{ 0x00, 0x00, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x00 }, // 31
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 32
{ 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x00 }, // 33
{ 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 34
{ 0x00, 0x50, 0xF8, 0x50, 0xF8, 0x50, 0x00, 0x00 }, // 35
{ 0x70, 0xA8, 0xA0, 0x70, 0x28, 0xA8, 0x70, 0x00 }, // 36
{ 0x00, 0x00, 0x90, 0x20, 0x40, 0x90, 0x00, 0x00 }, // 37
{ 0x00, 0x20, 0x20, 0xF8, 0xA0, 0x60, 0x00, 0x00 }, // 38
{ 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 39
{ 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x00, 0x00 }, // 40
{ 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00 },
{ 0x00, 0xA8, 0x70, 0xF8, 0x70, 0xA8, 0x00, 0x00 },
{ 0x00, 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x80, 0x00 },
{ 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00 },
{ 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00 },
{ 0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, 0x00 },
{ 0x40, 0xC0, 0x40, 0x40, 0x40, 0xE0, 0x00, 0x00 },
{ 0x60, 0x90, 0x10, 0x20, 0x40, 0xF0, 0x00, 0x00 },
{ 0xC0, 0x20, 0x60, 0x20, 0x20, 0xC0, 0x00, 0x00 },
{ 0x20, 0xA0, 0xA0, 0xF0, 0x20, 0x20, 0x00, 0x00 },
{ 0xF0, 0x80, 0xE0, 0x10, 0x10, 0xE0, 0x00, 0x00 },
{ 0x70, 0x80, 0xE0, 0x90, 0x90, 0x60, 0x00, 0x00 },
{ 0xE0, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00 },
{ 0x60, 0x90, 0x60, 0x90, 0x90, 0x60, 0x00, 0x00 },
{ 0x60, 0x90, 0x70, 0x10, 0x90, 0x60, 0x00, 0x00 },
{ 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 },
{ 0x00, 0x40, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00 },
{ 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x00 },
{ 0x00, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x00, 0x00 },
{ 0x80, 0x40, 0x20, 0x10, 0x20, 0x40, 0x80, 0x00 },
{ 0x40, 0xA0, 0x10, 0x20, 0x40, 0x00, 0x40, 0x00 },
{ 0x70, 0x88, 0xA8, 0xB8, 0x80, 0x70, 0x00, 0x00 },
{ 0x20, 0x50, 0x88, 0xF8, 0x88, 0x88, 0x00, 0x00 },
{ 0xE0, 0x90, 0xE0, 0x90, 0x90, 0xE0, 0x00, 0x00 },
{ 0x60, 0x90, 0x80, 0x80, 0x90, 0x60, 0x00, 0x00 },
{ 0xE0, 0x90, 0x90, 0x90, 0x90, 0xE0, 0x00, 0x00 },
{ 0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, 0x00 },
{ 0xF0, 0x80, 0xE0, 0x80, 0x80, 0x80, 0x00, 0x00 },
{ 0x70, 0x80, 0x98, 0x88, 0x88, 0x70, 0x00, 0x00 },
{ 0x90, 0x90, 0xF0, 0x90, 0x90, 0x90, 0x00, 0x00 },
{ 0xE0, 0x40, 0x40, 0x40, 0x40, 0xE0, 0x00, 0x00 },
{ 0x10, 0x10, 0x10, 0x10, 0x90, 0x60, 0x00, 0x00 },
{ 0x90, 0xA0, 0xC0, 0xA0, 0x90, 0x90, 0x00, 0x00 },
{ 0x80, 0x80, 0x80, 0x80, 0x90, 0xF0, 0x00, 0x00 },
{ 0xCC, 0xCC, 0xB4, 0xB4, 0x84, 0x84, 0x00, 0x00 },
{ 0xC8, 0xC8, 0xA8, 0xA8, 0x98, 0x98, 0x00, 0x00 },
{ 0x70, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 },
{ 0xE0, 0x90, 0x90, 0xE0, 0x80, 0x80, 0x00, 0x00 },
{ 0x70, 0x88, 0x88, 0xA8, 0x98, 0x70, 0x08, 0x00 },
{ 0xE0, 0x90, 0x90, 0xE0, 0xA0, 0x90, 0x00, 0x00 },
{ 0x70, 0x80, 0x60, 0x10, 0x90, 0x60, 0x00, 0x00 },
{ 0xF8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00 },
{ 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 },
{ 0x88, 0x88, 0x88, 0x50, 0x50, 0x20, 0x00, 0x00 },
{ 0x84, 0x84, 0x84, 0xB4, 0xB4, 0x48, 0x00, 0x00 },
{ 0x88, 0x50, 0x20, 0x50, 0x50, 0x88, 0x00, 0x00 },
{ 0x88, 0x88, 0x50, 0x20, 0x20, 0x20, 0x00, 0x00 },
{ 0xF0, 0x10, 0x20, 0x40, 0x80, 0xF0, 0x00, 0x00 },
{ 0xC0, 0x80, 0x80, 0x80, 0x80, 0xC0, 0x00, 0x00 },
{ 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x00, 0x00 },
{ 0xC0, 0x40, 0x40, 0x40, 0x40, 0xC0, 0x00, 0x00 },
{ 0x40, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00 },
{ 0x80, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x60, 0x10, 0x70, 0x90, 0x68, 0x00, 0x00 },
{ 0x80, 0x80, 0xE0, 0x90, 0x90, 0xE0, 0x00, 0x00 },
{ 0x00, 0x00, 0x60, 0x80, 0x80, 0x60, 0x00, 0x00 },
{ 0x10, 0x10, 0x70, 0x90, 0x90, 0x70, 0x00, 0x00 },
{ 0x00, 0x60, 0x90, 0xE0, 0x80, 0x70, 0x00, 0x00 },
{ 0x20, 0x40, 0xE0, 0x40, 0x40, 0x40, 0x00, 0x00 },
{ 0x00, 0x00, 0x70, 0x90, 0x90, 0x70, 0x10, 0xE0 },
{ 0x80, 0x80, 0xE0, 0x90, 0x90, 0x90, 0x00, 0x00 },
{ 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00 },
{ 0x00, 0x40, 0x00, 0x40, 0x40, 0x40, 0x80, 0x00 },
{ 0x80, 0x80, 0xA0, 0xC0, 0xA0, 0xA0, 0x00, 0x00 }, // 107 'k' 10000000
{ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00 }, // 108 l 10100000
{ 0x00, 0x00, 0xF0, 0xA8, 0xA8, 0x88, 0x00, 0x00 }, // 109 m 10100000
{ 0x00, 0x00, 0xE0, 0x90, 0x90, 0x90, 0x00, 0x00 }, // 110 n 11000000
{ 0x00, 0x00, 0x60, 0x90, 0x90, 0x60, 0x00, 0x00 }, // 111 o 10100000
{ 0x00, 0x00, 0xE0, 0x90, 0x90, 0xE0, 0x80, 0x80 }, // 112 p 10100000
{ 0x00, 0x00, 0x70, 0x90, 0x90, 0x70, 0x18, 0x10 }, // 113 q
{ 0x00, 0x00, 0xB0, 0xC0, 0x80, 0x80, 0x00, 0x00 }, // 114 r
{ 0x00, 0x70, 0x80, 0x60, 0x10, 0xE0, 0x00, 0x00 }, // 115 s
{ 0x40, 0x40, 0xE0, 0x40, 0x40, 0x20, 0x00, 0x00 },
{ 0x00, 0x00, 0x90, 0x90, 0x90, 0x70, 0x00, 0x00 },
{ 0x00, 0x00, 0x88, 0x88, 0x50, 0x20, 0x00, 0x00 },
{ 0x00, 0x00, 0x88, 0xA8, 0xA8, 0x50, 0x00, 0x00 }, // 119 w
{ 0x00, 0x00, 0x90, 0x60, 0x60, 0x90, 0x00, 0x00 }, // 120 x
{ 0x00, 0x00, 0x90, 0x90, 0x90, 0x70, 0x10, 0xE0 }, // 121
{ 0x00, 0xF0, 0x10, 0x60, 0x80, 0xF0, 0x00, 0x00 }, // 122
{ 0x20, 0x40, 0x40, 0x80, 0x40, 0x40, 0x20, 0x00 }, // 123
{ 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00 }, // 124
{ 0x80, 0x40, 0x40, 0x20, 0x40, 0x40, 0x80, 0x00 }, // 125
{ 0x00, 0x48, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 126
{ 0x00, 0x00, 0x20, 0x50, 0x88, 0xF8, 0x00, 0x00 }, // 127
};
unsigned char width10 [128] = {
2, 8, 8, 8, 8, 7, 7, 7, // 0-7
7, 8, 7, 7, 7, 7, 7, 7, // 8-15
6, 6, 6, 7, 7, 7, 7, 8, // 16-23
8, 8, 8, 8, 7, 8, 8, 8, // 24-31
5, 3, 6, 8, 6, 8, 6, 3, // 32-39
5, 5, 6, 6, 4, 6, 3, 7, // 40-47
6, 5, 6, 6, 6, 6, 6, 6, // 48-55
6, 6, 3, 4, 6, 6, 6, 6, // 56-63
7, 6, 6, 6, 6, 6, 6, 7, // 64-71
6, 5, 6, 6, 6, 8, 7, 6, // 72-79
6, 7, 6, 6, 7, 6, 6, 8, // 80-87
7, 8, 7, 4, 7, 4, 6, 6, // 88-95
4, 6, 6, 6, 6, 6, 5, 6, // 96-103
6, 3, 5, 6, 4, 8, 6, 6, // 104-111
6, 7, 6, 6, 5, 6, 7, 8, // 112-119
6, 6, 6, 5, 3, 5, 7, 8, // 120-127
};
unsigned char font10 [128] [10] = {
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0
{ 0x3C, 0x42, 0x99, 0xA5, 0xA1, 0xA5, 0x99, 0x42, 0x3C, 0x00 }, // 1
{ 0x3C, 0x42, 0xB9, 0xA5, 0xB9, 0xA9, 0xA5, 0x42, 0x3C, 0x00 }, // 2
{ 0x00, 0x6C, 0xFE, 0xFE, 0x7C, 0x7C, 0x38, 0x10, 0x00, 0x00 }, // 3
{ 0x00, 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x00 }, // 4
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 5
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 6
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 7
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 8
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 9
{ 0x00, 0x00, 0x00, 0x24, 0x64, 0xFC, 0x60, 0x20, 0x00, 0x00 }, // 10
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 11
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 12
{ 0x00, 0x00, 0x00, 0x24, 0x64, 0xFC, 0x60, 0x20, 0x00, 0x00 }, // 13
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 14
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 15
{ 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00 }, // 16
{ 0x08, 0x18, 0x38, 0x78, 0xF8, 0x78, 0x38, 0x18, 0x08, 0x00 }, // 17
{ 0x20, 0x70, 0xF8, 0x20, 0x20, 0xF8, 0x70, 0x20, 0x00, 0x00 }, // 18
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 19
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 20
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 21
{ 0xFE, 0xAA, 0x54, 0xAA, 0x54, 0xAA, 0x54, 0xFE, 0x00, 0x00 }, // 22
{ 0xAB, 0xD5, 0xAB, 0xD5, 0xAB, 0xD5, 0xAB, 0xD5, 0xAB, 0xD5 }, // 23
{ 0x10, 0x38, 0x7C, 0xFE, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00 }, // 24
{ 0x38, 0x38, 0x38, 0x38, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x00 }, // 25
{ 0x00, 0x10, 0x18, 0xFC, 0xFE, 0xFC, 0x18, 0x10, 0x00, 0x00 }, // 26
{ 0x00, 0x10, 0x30, 0x7E, 0xFE, 0x7E, 0x30, 0x10, 0x00, 0x00 }, // 27
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 28
{ 0x00, 0x00, 0x24, 0x66, 0xFF, 0x66, 0x24, 0x00, 0x00, 0x00 }, // 29
{ 0x00, 0x00, 0x10, 0x38, 0x7C, 0xFE, 0x00, 0x00, 0x00, 0x00 }, // 30
{ 0x00, 0x00, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00 }, // 31
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 32
{ 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x00, 0x00 }, // 33
{ 0xD8, 0xD8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 34
{ 0x00, 0x1B, 0x7F, 0x36, 0x36, 0xFF, 0x6C, 0x00, 0x00, 0x00 }, // 35
{ 0x20, 0x70, 0xA8, 0xA0, 0x70, 0x28, 0xA8, 0x70, 0x20, 0x00 }, // 36
{ 0x00, 0x43, 0xA6, 0x4C, 0x18, 0x32, 0x65, 0xC2, 0x00, 0x00 }, // 37
{ 0x20, 0x50, 0x20, 0x68, 0x68, 0x90, 0x90, 0x68, 0x00, 0x00 }, // 38
{ 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 39
{ 0x30, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0x00 }, // 40
{ 0xC0, 0x60, 0x30, 0x30, 0x30, 0x30, 0x60, 0xC0, 0x00, 0x00 }, // 41
{ 0x00, 0x00, 0xA8, 0x70, 0xF8, 0x70, 0xA8, 0x00, 0x00, 0x00 }, // 42
{ 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x00, 0x00, 0x00 }, // 43
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0xC0, 0x00 }, // 44
{ 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 45
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00 }, // 46
{ 0x0C, 0x0C, 0x18, 0x30, 0x30, 0x60, 0xC0, 0xC0, 0x00, 0x00 }, // 47
{ 0x70, 0xD8, 0x98, 0xA8, 0xA8, 0xC8, 0xD8, 0x70, 0x00, 0x00 }, // 48
{ 0x60, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00 }, // 49
{ 0xF0, 0x98, 0x18, 0x30, 0x60, 0xC0, 0xC8, 0xF8, 0x00, 0x00 }, // 50
{ 0x70, 0xD8, 0x18, 0x30, 0x18, 0x18, 0xD8, 0x70, 0x00, 0x00 }, // 51
{ 0x10, 0x30, 0x70, 0xD0, 0xF8, 0x10, 0x10, 0x10, 0x00, 0x00 }, // 52
{ 0xF8, 0xC8, 0xC0, 0xF0, 0x18, 0x18, 0xD8, 0x70, 0x00, 0x00 }, // 53
{ 0x70, 0xD8, 0xC0, 0xF0, 0xD8, 0xD8, 0xD8, 0x70, 0x00, 0x00 }, // 54
{ 0xF8, 0xD8, 0x18, 0x30, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00 }, // 55
{ 0x70, 0xD8, 0xD8, 0x70, 0xD8, 0xD8, 0xD8, 0x70, 0x00, 0x00 }, // 56
{ 0x70, 0xD8, 0xD8, 0x78, 0x18, 0x18, 0xD8, 0x70, 0x00, 0x00 }, // 57
{ 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00 }, // 58
{ 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0xC0, 0x00, 0x00 }, // 59
{ 0x00, 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00, 0x00 }, // 60
{ 0x00, 0x00, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00 }, // 61
{ 0x00, 0xC0, 0x60, 0x30, 0x18, 0x30, 0x60, 0xC0, 0x00, 0x00 }, // 62
{ 0x70, 0xD8, 0x88, 0x18, 0x30, 0x30, 0x00, 0x30, 0x00, 0x00 }, // 63
{ 0x78, 0x84, 0xB4, 0xB4, 0xB4, 0x9C, 0xC0, 0x7C, 0x00, 0x00 }, // 64
{ 0x70, 0xD8, 0xD8, 0xD8, 0xF8, 0xD8, 0xD8, 0xD8, 0x00, 0x00 }, // 65
{ 0xF0, 0xD8, 0xD8, 0xF0, 0xD8, 0xD8, 0xD8, 0xF0, 0x00, 0x00 }, // 66
{ 0x70, 0xD8, 0xC0, 0xC0, 0xC0, 0xC0, 0xD8, 0x70, 0x00, 0x00 }, // 67
{ 0xE0, 0xF0, 0xD8, 0xD8, 0xD8, 0xD8, 0xF0, 0xE0, 0x00, 0x00 }, // 68
{ 0xF8, 0xD8, 0xC0, 0xF0, 0xC0, 0xC0, 0xD8, 0xF8, 0x00, 0x00 }, // 69
{ 0xF8, 0xD8, 0xC0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00 }, // 70
{ 0x78, 0xCC, 0xC0, 0xC0, 0xDC, 0xCC, 0xCC, 0x78, 0x00, 0x00 }, // 71
{ 0xD8, 0xD8, 0xD8, 0xF8, 0xD8, 0xD8, 0xD8, 0xD8, 0x00, 0x00 }, // 72
{ 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00 }, // 73
{ 0x38, 0x18, 0x18, 0x18, 0x18, 0xD8, 0xD8, 0x70, 0x00, 0x00 }, // 74
{ 0xD8, 0xD8, 0xF0, 0xE0, 0xF0, 0xD8, 0xD8, 0xD8, 0x00, 0x00 }, // 75
{ 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xD8, 0xF8, 0x00, 0x00 }, // 76
{ 0xC6, 0xEE, 0xFE, 0xD6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00 }, // 77
{ 0x8C, 0xCC, 0xEC, 0xEC, 0xDC, 0xDC, 0xCC, 0xC4, 0x00, 0x00 }, // 78
{ 0x70, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x70, 0x00, 0x00 }, // 79
{ 0xF0, 0xD8, 0xD8, 0xD8, 0xF0, 0xC0, 0xC0, 0xC0, 0x00, 0x00 }, // 80
{ 0x30, 0x78, 0xCC, 0xCC, 0xCC, 0xDC, 0x78, 0x34, 0x00, 0x00 }, // 81
{ 0xF0, 0xD8, 0xD8, 0xF0, 0xE0, 0xF0, 0xD8, 0xD8, 0x00, 0x00 }, // 82
{ 0x70, 0xD8, 0xC0, 0x70, 0x18, 0x18, 0xD8, 0x70, 0x00, 0x00 }, // 83
{ 0xFC, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00 }, // 84
{ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x70, 0x00, 0x00 }, // 85
{ 0xD8, 0xD8, 0xD8, 0xD8, 0xF8, 0xF8, 0x70, 0x20, 0x00, 0x00 }, // 86
{ 0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00, 0x00 }, // 87
{ 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x78, 0xCC, 0xCC, 0x00, 0x00 }, // 88
{ 0xCC, 0xCC, 0x48, 0x78, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00 }, // 89
{ 0xFC, 0xCC, 0x18, 0x30, 0x60, 0xC0, 0xCC, 0xFC, 0x00, 0x00 }, // 90
{ 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x00, 0x00 }, // 91
{ 0xC0, 0xC0, 0x60, 0x30, 0x30, 0x18, 0x0C, 0x0C, 0x00, 0x00 }, // 92
{ 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0x00, 0x00 }, // 93
{ 0x20, 0x70, 0xD8, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 94
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00 }, // 95
{ 0xC0, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 96
{ 0x00, 0x00, 0x00, 0xF0, 0x18, 0x78, 0xD8, 0x78, 0x00, 0x00 }, // 97
{ 0xC0, 0xC0, 0xC0, 0xF0, 0xD8, 0xD8, 0xD8, 0xF0, 0x00, 0x00 }, // 98
{ 0x00, 0x00, 0x00, 0x70, 0xD8, 0xC0, 0xD8, 0x70, 0x00, 0x00 }, // 99
{ 0x18, 0x18, 0x18, 0x78, 0xD8, 0xD8, 0xD8, 0x78, 0x00, 0x00 }, // 100
{ 0x00, 0x00, 0x00, 0x70, 0xD8, 0xF0, 0xC0, 0x78, 0x00, 0x00 }, // 101
{ 0x30, 0x60, 0x60, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00 }, // 102
{ 0x00, 0x00, 0x00, 0x70, 0xD8, 0xD8, 0xD8, 0x78, 0x18, 0xF0 }, // 103
{ 0xC0, 0xC0, 0xC0, 0xF0, 0xD8, 0xD8, 0xD8, 0xD8, 0x00, 0x00 }, // 104
{ 0x00, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00 }, // 105
{ 0x00, 0x30, 0x00, 0x30, 0x30, 0x30, 0x30, 0xB0, 0xF0, 0x60 }, // 106
{ 0xC0, 0xC0, 0xD8, 0xF0, 0xE0, 0xF0, 0xD8, 0xD8, 0x00, 0x00 }, // 107
{ 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00 }, // 108
{ 0x00, 0x00, 0x00, 0xEC, 0xD6, 0xD6, 0xD6, 0xD6, 0x00, 0x00 }, // 109
{ 0x00, 0x00, 0x00, 0xB0, 0xD8, 0xD8, 0xD8, 0xD8, 0x00, 0x00 }, // 110
{ 0x00, 0x00, 0x00, 0x70, 0xD8, 0xD8, 0xD8, 0x70, 0x00, 0x00 }, // 111
{ 0x00, 0x00, 0x00, 0x70, 0xD8, 0xD8, 0xD8, 0xF0, 0xC0, 0xC0 }, // 112
{ 0x00, 0x00, 0x00, 0x70, 0xD8, 0xD8, 0xD8, 0x78, 0x1C, 0x18 }, // 113
{ 0x00, 0x00, 0x00, 0xB0, 0xD8, 0xC0, 0xC0, 0xC0, 0x00, 0x00 }, // 114
{ 0x00, 0x00, 0x00, 0x78, 0xC0, 0x70, 0x18, 0xF0, 0x00, 0x00 }, // 115
{ 0x60, 0x60, 0x60, 0xF0, 0x60, 0x60, 0x60, 0x30, 0x00, 0x00 }, // 116
{ 0x00, 0x00, 0x00, 0xD8, 0xD8, 0xD8, 0xD8, 0x68, 0x00, 0x00 }, // 117
{ 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00, 0x00 }, // 118
{ 0x00, 0x00, 0x00, 0xC6, 0xD6, 0xD6, 0xEE, 0xC6, 0x00, 0x00 }, // 119
{ 0x00, 0x00, 0x00, 0xD8, 0x70, 0x20, 0x70, 0xD8, 0x00, 0x00 }, // 120
{ 0x00, 0x00, 0x00, 0xD8, 0xD8, 0xD8, 0x78, 0x18, 0x18, 0xF0 }, // 121
{ 0x00, 0x00, 0x00, 0xF8, 0x30, 0x60, 0xC0, 0xF8, 0x00, 0x00 }, // 122
{ 0x30, 0x60, 0x60, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x00, 0x00 }, // 123
{ 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00 }, // 124
{ 0xC0, 0x60, 0x60, 0x30, 0x60, 0x60, 0x60, 0xC0, 0x00, 0x00 }, // 125
{ 0x00, 0x00, 0x6C, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 126
{ 0x00, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xFE, 0x00, 0x00, 0x00 }, // 127
};
#define _SEQU 0x3C4
// VGA Sequencer
#define _CRTC 0x3D4
// CRT Controller
#define _GRAC 0x3CE
// #define PHARLAP
#ifdef PHARLAP
#define _VGA_PTR ((byte far *)MK_FP(0x34,0xA0000))
#else
#define _VGA_PTR ((byte *)0xA0000)
#endif
/*
#define REAL_SEGMENT 0x34
void far *pharlapfirstmeg (int linearaddresss offset )
{
return MK_FP (REAL_SEGMENT, linearaddress);
}*/
void setvideomode (int mode, boolean qsize)
{
union REGS regs;
int v;
int xregset = -1, yregset = -1, doublescan = 1;
boolean chained = true;
debug0("Gonna set video mode...");
static struct {
int res;
int h_total, h_enableend;
int h_blankstart, h_blankend;
int h_retracestart, h_retraceend;
int clockselect, h_polarity;
} x [5] = {
{ 320, 0x5F, 0x4F, 0x50, 0x82, 0x54, 0x80, 0, 1 },
{ 256, 0x5F, 0x3F, 0x40, 0x82, 0x4A, 0x9A, 0, 1 },
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -