/* * _bgi_mode_set (drv256) — вход в графический режим 320×256×256. * * Загружает EGA-совместимые цвета 0..15 в палитру 0, чтобы setcolor(RED) * и прочие BGI-константы давали ожидаемый цвет. Заполняет границы * экрана в состоянии BGI. Возвращает предыдущий видеорежим. */ #include "../_bgi.h" #include /* 16 EGA-цветов, формат записи палитры (B, G, R, pad). */ static const uint8_t _bgi_ega_pal[16 * 4] = { 0, 0, 0, 0, /* 0 BLACK */ 168, 0, 0, 0, /* 1 BLUE */ 0, 168, 0, 0, /* 2 GREEN */ 168, 168, 0, 0, /* 3 CYAN */ 0, 0, 168, 0, /* 4 RED */ 168, 0, 168, 0, /* 5 MAGENTA */ 0, 84, 168, 0, /* 6 BROWN */ 168, 168, 168, 0, /* 7 LIGHTGRAY */ 84, 84, 84, 0, /* 8 DARKGRAY */ 255, 84, 84, 0, /* 9 LIGHTBLUE */ 84, 255, 84, 0, /* 10 LIGHTGREEN */ 255, 255, 84, 0, /* 11 LIGHTCYAN */ 84, 84, 255, 0, /* 12 LIGHTRED */ 255, 84, 255, 0, /* 13 LIGHTMAGENTA */ 84, 255, 255, 0, /* 14 YELLOW */ 255, 255, 255, 0, /* 15 WHITE */ }; uint8_t _bgi_mode_set(void) { uint8_t prev = _videomode_raw_get(); _videomode_raw_set(GFX_MODE_320x256x256); _gfx_bank = 0x50; gfx_set_visible_page(0); gfx_set_draw_page(0); gfx_pal_load(0, 0, 16, _bgi_ega_pal); _bgi_maxx = GFX_WIDTH - 1; _bgi_maxy = GFX_HEIGHT - 1; _bgi_maxcolor = 255; return prev; }