Графика 24 бит, И возможно - создание игры... |
Графика 24 бит, И возможно - создание игры... |
Dark |
Сообщение
#1
|
Знаток Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: 3 |
Приветствую вас, тут я буду рассказывать об основах программирования графики 24 бит. Возможно, я также сподвигнусь написать игрушку, пока что - первоначально в планах наподобии King Bounty =) [в 24 битах... круто =) ]
-------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
Dark |
Сообщение
#2
|
Знаток Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: 3 |
Все программы, которые я пишу, я буду писать либо в Turbo Assembler, либо в TP
Первым делом - установка режима. VESA режимы, котрые нам подходят [24/32 bit] Код режима Разрешение экрана размер строки(в байтах) 10Fh 320*200 960/1280 112h 640*480 1290/2560 115р 800*600 2400/3200 118h 1024*768 3072/4096 11Bh 1280*1024 3840/5120 Я все время буду работать с режимом 800*600. Ну начнем мы с информационных функций: 1. Запрос общих данных 4F00h Входные данные ES:DI адрес(указатель) массива на 256 байт, который будет заполняться информацией о видеокарте. Первые 20 байт заполняются следующими данными: СМЕЩЕНИЕ ПО МАССИВУ РАЗМЕР(байт) ДАННЫЕ 00h 4 'VESA' 04h 2 версия VESA 06h 4 адрес строки фирмы-изготовителя 0Ah 4 СпецСвойства 0Eh 4 Адрес начала списка информации о поддерживаемых режимах 12H 2 Объем памяти видеокарточки (в блоках по 64 Кб) - Версия VESA, указывается номер версии и ее редакция. Записана в виде 0102 для VESA 1.2 - Строка фирмы-изготовителя. Коды формата ASII, строка заканчивется 0 (стандарт ASIIZ) - Спецсвойста я описывать не буду, либо опишу потом - они пока что интереса не представляют. - Признаком конца списка режимов является код 0FFFFh Анализ Спецсвойст и списка видеорежимов не очень целесообразен. Остальные байты в резерве. простейшая програмка, выводящая всю информацию, получаемую этим прерыванием:
Обратите внимание - первая строка - в виде билеберды потому что функции BIOS и DOS работают ТОЛЬКО с ASCII строками, поэтому мне пришлось написать дополнительно функцию, преобразующую слово в BCD слово, а затем BCD слово в символ. Если кто то знает более легкий путь, пусть сообщит сюда, мне. Следующая фаза - получение информации о режиме. О ней в другом выпуске. Мне интересны любые вопросы и коментарии, которые вы можете предложить. |Пытался запихнуть в архив - не удалось, форум не хочет его грузить =( попытаюсь ночью -------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
Текстовая версия | 29.04.2024 7:00 |