----------------------------------------
Николай Дворник
10000 бод на bukome?
----------------------
Вот решил написать про то, как реа-
лизовать драйвер для vicomm-подобных мо-
дeмов на 10000-19000 бод!!! (чистой ско-
рости при передаче). Суть метода в том,
чтобы хранить таблицу разложeных на 1bit
структуру всех 256 байт (типа фаст прин-
та), а потом выбирать из буфера обмена
байт, засылать в младший разряд регистра
адресата таблицы и, считывая из таблицы,
коды засылать их в порт, а именно:
;hl-address of information
;bc-how much bytes output
;de-address of table
drv ld d,tabl' ;7
drv1 ld e,(hl) ;7
;----------25браз-------------
dup 8
ld а,(de) ;7
out (#fe),а ;12
inc d ;4
edup
inc hl ;6
ld d,table' ;7
ld e,(hl) ;7
dup 8
ld а,(de)
out (#fe),а
inc d
dup 5;
пор ;--------синхро
edup ;
edup ;блоками по 256 байт
....
;------------------------------
ret
Итого на 1 бит уходит 7+7+12+4+6+7=
ЧЗтакта, на 1 байт 8*43=3ЧЧтакта, итого
скорость (для 3.SМгц Пентагона) 71680/
344*50=10419бод! (чистой скорости), а в
кэше (на 7Мгц) 20837бод!!! Рулит...
На счет приемника. Читаем биты 1-го
блока, то есть 2048 байт из #fe, а потом
конвертим. Для MulTiPlaYera просто форe-
ва! Так что дeлeм 3D (fast) двигло, и в
oNl!пЕ рубим!:). Ясно, что в терминалках
данный алгоритм так сильно не порyлит,
так как всякие cинхороимпyльcы, конт-
рольныe суммы, да и вообще - синхронный
тип передачи - просто SuXX, а вот acuhx-
ронный просто рулит.
ЗD-Engine
-----------
Решил я написать статью про 3D. А
именно о том, как реализовать faST
poL!goNs oUtpuT. Вся суть состоит в том,
что я наконец-то понял, что все эти тек-
cтyры не нужны - выглядят они плохо и
жрут 25-35fps. (suxx)
И тут (там) меня осенило, что вместо
полигонов можно использовать спрайты.
Кто-то скажет - а зачем поворачивать их
по оси для разных углов зрения, вообще
полная ерунда! А я отвечу - зачем пово-
рачивать, если спрайты просто гохх! А
именно: выбираем на сколько градусов бу-
дет поворачиваться "лицо" героя, да так,
чтоб c аттрибутами и красиво (цветно щоб
було!), а именно - на 11.3 градусов
(1 аттрибyт) при размере экрана 256х192.
При этом, при повороте на 90 градусов,
будет нужно всего 8 спрайтов размером
84х32. Ясно, что в двиглe будет проце-
дура увеличения на весь экран, так как
использовать аттрибуты в окне 84х32 про-
сто маразм, да и мeлковато, ЦЕЛиться
плохо.
Как работает. Просто высчитываем угол
зрения и расстояние от спрайта до глаз и
выводим соответствующую часть соответст-
вyющого спрайта. Как узнать: какой
спрайт печатать? Просто, зная угол зрe-
ния (или лучше - его тангенс), от глаз
строим несколько прямых (по ширине зрe-
ния) в карте, пока номер спрайта, cчиты-
ваeмый из каждой точки, которая принад-
лежит прямой, не станет больше 0, (0 -
пустота), следовательно дальше этого
обьекта мы не видим (пули тоже можно так
трассировать) и все - печатаем все по
соответствующим координатам до конечной.
Как работает. Просто высчитываем угол
зрения и расстояние от спрайта до глаз и
выводим соответствующую часть соответст-
вyющого спрайта. Как узнать: какой
спрайт печатать? Просто, зная угол зрe-
ния (или лучше - его тангенс), от глаз
строим несколько прямых (по ширине зрe-
ния) в карте, пока номер спрайта, cчиты-
ваeмый из каждой точки, которая принад-
лежит прямой, не станет больше 0, (0 -
пустота), следовательно дальше этого
обьекта мы не видим (пули тоже можно так
трассировать) и все - печатаем все по
соответствующим координатам до конечной.
Модели героев хранить в расчете на full
screen, чтобы выглядели прилично и рулез
форева!:)
Y меня единственный вопрос. Opeuhtu-
ровать игру на single или сразу на mul-
tiplayer? Напишите, плиз.
Other articles: