╔═══════════════════════════════════╗╔══╗
| Видео на спеке... ╔╗╚╝ |
╚═════════════════════════════════╝╚════╝
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 квору-
ма. Это делается просто:
Other articles: