Обычный режим «80x25 символов» на самом деле составляет 720x350 пикселей (это означает, что каждая ячейка символа имеет ширину 9 пикселей и высоту 14 пикселей). Символьные режимы двойной ширины («40x25») могут либо просто интерполировать это на большую ширину, удваивая каждый столбец, чтобы сэкономить на памяти видеоконтента (сокращая необходимый объем памяти видеоконтента в два раза), либо использовать дополнительную память глифа и идентичный объем памяти видеоконтента для увеличения ячеек персонажа до 18 * 14 пикселей.
Довольно рано (я думаю, что это было сделано, когда была представлена EGA ), в режим текстового отображения на IBM PC была добавлена поддержка пользовательских глифов символов.
Обычный текстовый режим IBM PC - это просто 4000 байтов ОЗУ видеоконтента по определенному адресу. Они считываются как один байт символьных атрибутов (первоначально мигающий, полужирный, подчеркивание и т. Д .; затем повторно используется для цветов переднего плана и фона и мигающий / выделенный, отсюда ограничение до 16 цветов в текстовом режиме) и один байт, описывающий символ для отображаться. Фактический глиф, отображаемый для каждого значения байта символа, хранится в другом месте.
Это означает, что до тех пор, пока вы можете обойтись с 256 различными глифами на экране в любое время, и каждый глиф может быть представлен как однобитное растровое изображение 9x14, вы можете просто заменить глифы в памяти, чтобы символы выглядели по-разному, Частично это была одна часть того, что mode con codepage select
делали в DOS. Это относительно тривиально.
Если вам нужно более 256 различных символов, но вы можете жить с уменьшенным количеством символов на экране, вы можете использовать схему 40x25 с символами двойной ширины (18 пикселей в ширину). Предполагая, что общий объем ОЗУ видеоконтента фиксирован, и предполагая, что вы можете увеличить объем памяти растрового изображения глифа, вы можете перейти к использованию двух байтов из каждых четырех байтов для представления одного экранного глифа, предоставляя вам доступ к 2 ^ 16 = 65 536 различных символов (включая пустой символ). Если вы чувствуете смелость, вы можете даже пропустить второй байт атрибута, который дает вам доступ к 2 ^ 24 ~ 16,7M различным символам. Оба этих подхода основаны на специальной поддержке программного обеспечения, но часть аппаратного и встроенного программного обеспечения должна быть довольно простой. 65 536 символов с разрешением 18x14 однобитных пикселей занимают около 2 МБ, что является значительным, но не непреодолимым объемом памяти в то время.
Базовому американскому английскому языку нужно как минимум 62 выделенных глифа (цифры 0-9, буквы AZ в верхнем и нижнем регистре), поэтому у вас есть что-то вроде 180-190 глифов для игры, если вы также хотите иметь возможность отображать текст на английском языке США время и идти с 8 битами на глиф. Если вы можете жить без одновременной поддержки американского английского, что вы можете сделать в среде с ограниченными ресурсами, такой как ранняя архитектура IBM PC, у вас есть доступ к полному количеству глифов.
С некоторой хитростью вы могли бы, вероятно, смешать и сопоставить две схемы тоже.
Я не знаю, как это было на самом деле, но обе они являются жизнеспособными схемами для того, чтобы вывести «причудливые» алфавиты с особенно ограниченным числом символов на простой экран IBM PC в текстовом режиме, которые я могу придумать, просто сидя впереди. стек обмена на мгновение. Вполне возможно, что есть дополнительные графические режимы, которые делают это проще на практике.
Также имейте в виду различие между текстовым режимом и графическим режимом отображения текста . Если вы работаете в графическом режиме, возможно, с помощью VESA, который довольно универсально поддерживается, вы можете самостоятельно рисовать глифы символов, но у вас также есть гораздо больше свободы в их рисовании. Например, я уверен, что текстовые части Windows NT (к которому относится семейство продуктов, к которому относится Windows XP) используют графический режим для отображения текста, включая загрузочный экран Windows NT 4.0 и BSOD.