|
ZX Time #12
27 мая 2003 |
|

---------------------------------------- Николай Дворник 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:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Similar articles:
В этот день... 1 January
SibNews #08,
Woot! #01,
Spectrum Magazine #01,
ACNews #25,
Psychoz #14,
ACNews #14,
Last 128 #08,
Last 128 #06,
Last 128 #05,
Last 128 #04,
Last 128 #03,
Last 128 #02,
Last 128 #09,
Last 128 #3.5,
Last 128 #8.025,
Sinclair Club #05,
Last 128 #M!R 01,
Fantadrom #01,
Buzz #20,
Last 128 #01,
DonNews #13,
Nicron #120,
Promised Land #01,
Inferno #01,
Marazm #25,
Ultimathum #01,
Marazm #21,
Hooy Mag #02,
KrNews #11,
Marazm #22,
Marazm #23,
ZX Football 2000 #01,
Codemania #01,
Always #03,
Bugs #02,
IzhNews #08,
Virtual Worlds #01,
Listok #04,
Scenergy #02,
Flash Info #18,
Marazm #16,
Marazm #17,
Zed #01,
Balagan #02,
ZX Format #08,
ZX Power #03,
Shock #01,
Impulse #02,
Deja Vu #03,
ZX Club #08,
ZX Club #06,
Numberology #01,
Marazm #13,
Marazm #12,
Marazm #14,
Gorodok #02,
Zodiac #01,
Marazm #15,
Deja Vu #07,
Marazm #11,
Deja Vu #07,
Playboy #03,
Crazy News #2,
Crazy News #4,
ZX Light #01,
Crazy News #5,
Playboy #02,
ZX News #03,
ZX Review #1-2,
Read Me #02,
Crazy News #3,
Nicron #13,
Read Me #01,
Public Spirit #01,
Faultless #06,
Faultless #05,
ZX Software #01,
Stump #04,
Speccy #07,
Возраждение #0,
Speccy #03,
On-Line #17,
Scene+ #01,
Welcome Press #01,
ZX Konig #04,
Adventurer #01,
Faultless #05,
Faultless #04,
Di Halt #01,
Faultless #01,
Playboy #01,
Crazy News #1,
Faultless #03,
Pioneer #03,
Sinclair Town #02,
ZX Magazine #01,
Eldorado #01,
ZX Magazine #02,
Spectron #01,
ZX News #01,
ZX Konig #02,
200 #W,
Welcome Press #00,
Dune #07,
Subliminal Extacy #01,
Subliminal Extacy #02,
ZX Konig #01,
Subliminal Extacy #00,
Muchomor #01,
Spectrofon #01,
ZX Revija #02,
Outlet #01,
Outlet #1-3