Plutonium #09 |
|
Видео на спеке - В этой статье речь пойдет о том, как на спеке с памятью 128 килобайт организовать реактивный показ видео в высоком разрешении.
╔═══════════════════════════════════╗╔══╗ | Видео на спеке... ╔╗╚╝ | ╚═════════════════════════════════╝╚════╝ Lynx/Infotek Fast high resolution full screen video engine Fast high resolution full screen video engine В этой статье речь пойдет о том, как на спеке с памятью 128 килобайт организовать реактивный показ видео в высоком разреше- нии. Это - самый легкий и в то же время самый 'рульный' и самый быстрый способ вывода видео кадров на экран. Что требуется для этого. Для этого, для примера надо запастись 15-ю кадрами како- го-нибудь видео (например, из какого-ни- будь писишного ЗD-shooter'а подергайте кадры по F12, потом конвертните их на спек). Теперь расскажу расположении этого ви- део(кадрах) в памяти. Для быстрого вывода на экран они храняться в незапакованном виде в основной памяти, а также в страни- цах памяти. Естественно страницы 2 и 5 не используются, т.к. они находяться в ос- новной памяти. В чем особенность такого видео. Дело в том, что сейчас в основном для малой траты памяти используют специальный фор- мат - вывод видео в низком разрешении - текстурками 4х4. И никто еше не практико- вал вывод видео в высоком разрешении на экран. Итак, начнем с программы, которая осу- шествляет этот вывод на экран. Программа может работать в любом режиме прерываний. Программа использует таблицу, в которой на каждый кадр выделено по 3 байта: 1 - страница, в которой этот кадр: 2,3 - адрес экрана. org 2SOOO ld hl,table ld b,15 l1: push bc ld bc,#7FFD ld a,(hl) add a,#1O out (c),a inc hl push hl ld a,(hl) inc hl ld h,(hl) ld l,a ld de,#ЧOOO ld bc,#18OO ldir рор hl call pause inc hl рор bc djnz l1 ret pause ld b,8 l2 halt djnz l2 table DB O DW 27OOO DB O DW 33144 DB O DW 39288 DB O DW 49152 DB O DW 55296 DB 1 DW 49152 DB 1 DW 55296 DB 3 DW 49152 DB 3 DW 55296 DB 4 DW 49152 DB 4 DW 55296 DB 6 DW 49152 DB 6 DW 55296 DB 7 DW 49152 DB 7 DW 55296 Вот такая вот программа. Она выводит ви- део на экран. Соответственно, в процедуре pause, количество halt'ов подобрано мной чисто под мое видео. С такой задержкой оно получилось пропорциональное. После загрузки этой программы в память надо соответственно таблице загрузить в память кадры. Легче всего это делать из 48-васика с открытыми страницами. Сделать это можно следуюшим образом: 1O OUT 32765,16+номер стр.:RANDOMIZE USR 15619:REM : LOAD "имя кадра" CODE адрес из таблицы. Это делается потому, что 48 бэйсик не переключает страницы каждое прерывание на ту, которая лежит в переменной 23388, и, соответственно удобно компоновать таким образом программы. Такой загрузчик я видел например, в де- ме BOOM. Ну вот и все. Напоследок дам один со- вет: как разлочить страницы и TR-DOS пос- ле возврата из пзу'шного меню 128 квору- ма. Это делается просто:
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября