PDA

Просмотр полной версии : Скроллер окошка текста фреймовый



Shadow Maker
14.01.2009, 07:00
В общем надо скроллер фреймовый как у megaball -> http://trd.speccy.cz/demo_ver/MBALL_D.ZIP
Печаталку даже 8x8 можно. У меня какой-то затуп с этой фигней, я могу написать, но пишу почему-то очень долго всякие такие фишки, связанные с экраном...

Sayman
14.01.2009, 07:07
попробуй через стэк...

Shadow Maker
14.01.2009, 07:36
Я совет просил? Не просил. Я сорцы просил. Не флудь...

Sayman
14.01.2009, 08:54
тогда тебе проще скачать сорец шторма, там фрэймовый скрол как раз 8*8 если не ошибаюсь!
http://opensourcezx.untergrund.net/c_soft-assembler-storm.html
чем сидеть ждать от моря погоды...

psndcj
14.01.2009, 09:12
8x6 там - плюс не фулскрин и тока познакоместно...

Shadow Maker
14.01.2009, 10:11
тогда тебе проще скачать сорец шторма, там фрэймовый скрол как раз 8*8 если не ошибаюсь!
http://opensourcezx.untergrund.net/c_soft-assembler-storm.html
чем сидеть ждать от моря погоды...
Там познакоместно, а мне надо плавный и для настраиваемого окошка, а не на ширину экрана.

psndcj
14.01.2009, 18:52
вот лови - простенький скроллер...

Shadow Maker
14.01.2009, 21:25
cj, а мона с конкретным случаем? Чтобы хотя бы запустить и посмотреть на то как оно ездит мона было.

psndcj
14.01.2009, 21:53
гы - там же есть скомпилированный уже снапшот, в котором все видно... там же не просто процедура, а готовый пример (кривоватый конечно немного, просто в лом было обвязку писать - так на скорую руку накидал, убыстрение/торможение скролла ппц кривое вышло =) )

Shadow Maker
14.01.2009, 22:12
А ты проверял? :) Если откомпилировать все сбрасывается. То ли таблички, то ли еще какой-то лабуды нет...

psndcj
14.01.2009, 22:32
нет - я не проверял - снапшот просто нашел непонятно откуда-то =)

видимо проблема с разными версиями сиджасма - я пользуюсь последней stable - ибо лучшее враг хорошего.

вот тока что скомпилил - сиджасм тоже в комплекте - потом стеру (чтобы не засорять место на форуме).

не представляю какие ошибки там могут быть... я aprisobal'а в том году пару месяцев мучал - пока все ошибки не пропали (кроме глюка с 48 снапшотом) - а потом уже не менял компилятор...

или как вариант - я же написал что обвязка кривая - может банки щелкаются некорректно - а твоему эмулятору это не нравится... там годето в #7ffd вроде 0 кидается в одном месте.

Shadow Maker
14.01.2009, 22:52
Реально баг в последней версии... Почему-то после ассемблирования в снапшоте врублена 7 страничка... Жесть.

Спасибо, пойду наворачивать чего-нить :)

Добавлено через 3 минуты

или как вариант - я же написал что обвязка кривая - может банки щелкаются некорректно - а твоему эмулятору это не нравится... там годето в #7ffd вроде 0 кидается в одном месте.
Эмулятор у нас с тобой один и тот же :)

Shadow Maker
15.01.2009, 12:11
cj, а у тебя там ошибки в расчетах никакой нету? А то что-то при изменении ширины по x больше 24 скроллер вниз сползает.

psndcj
15.01.2009, 12:22
вот щас скомпилировал под разные ширины - как меньше, так и больше - окно стоит на месте - высота тоже не плавает. или ты о том, что спрайт текста больше становится и выкидка? дык там размер спрайта рассчитывается [size_x * font_hgt * кол-во строк текста], размер кода выкидки тоже от ширины зависит - то есть чем больше ширина, тем больше спрайт. для большого окна и большого текста данный скролл не подойдет, надо делать как в megaball - переставление стека и работу с банками (либо допечатывание в реалтайме).

Shadow Maker
15.01.2009, 12:58
Ну да, я об этом... Блин, слушай, надо чего-то придумать, а то считай текста на 2 страницы, а места уже нет в памяти. Спрайт тупо мега-здоровый получается и места нету нифига.

psndcj
15.01.2009, 13:20
ну полноценный скролл пишется не за час как этот =)

в мегабалле - спрайт генерится в банки - занимает 14 почти экранов по практически 2/3 экрана - порядка 60К (4 банки)
код практически такой же как и в моем сорце, только рисуется все на #4000, и в каждой строке выкидки добавляется вначале 5 нулей.
перед выкидкой устанавливается нужная банка и нужный адрес дял стека, в BC заносится #7FFFD, в A - следующей банки.
рассчитывается когда происходит переполнение и там выставляется код LD SP,xxxx: OUT (C),A.
после вывода экрана этот код затирается
воть

в принципе это не сложно сделать - особенно если не мучаться с изменением размеров, а сразу писать под нужное окно.

ну и совет - в таких скроллах через раскранченный спрайт - обычно шрифт делают по высоте меньше 8, чтобы больше текста влазило, ибо при ширине текста в 32 знакоместа в память влезет порядка 300 строк всего (384 при использовании всех банок 0,1,3,4,6,7)

Shadow Maker
15.01.2009, 13:22
А если каждую новую строчку собирать на лету и двигать спрайте вверх-вниз? Не успеет?

Кстати хорошо пошутил, ввел font_hgt и нигде не использовал :) А я сижу втыкаю чож он мне высоту-то не меняет... :)

psndcj
15.01.2009, 13:43
полноценный скролл с допечатыванием гораздо сложнее по коду - успеет конечно, но я писать это не буду =) вон в Born Dead фуллскрин (практически) со цветом скроллируется.

насчет высоты... ну она учитывается в рассчетах размера спрайта (ручками) и теоретически должна быть в генерилке спрайта.
// тут тупо считается высота фонта равной 8
я же сразу сказал что обвязку надо переписывать под себя =)

Shadow Maker
15.01.2009, 13:47
полноценный скролл с допечатыванием гораздо сложнее по коду - успеет конечно, но я писать это не буду =) вон в Born Dead фуллскрин (практически) со цветом скроллируется.
Ну и черт с ним тогда, просто мне надо всё всунуть в 48k, а это сложнее...


насчет высоты... ну она учитывается в рассчетах размера спрайта (ручками) и теоретически должна быть в генерилке спрайта.
// тут тупо считается высота фонта равной 8
я же сразу сказал что обвязку надо переписывать под себя =)
Ну да, я и говорю типа пошутил хорошо. Кстати там не тока тут, там еще надо в генерилке спрайта это тоже учесть. :) В общем ишо раз спасибо. Как-то более понятно стало, как это вообще пишут. Места правда жрет как я не знаю чего...

psndcj
15.01.2009, 14:14
под 48К - зы
если текста много - тогда надо писать всетаки чтото более реальное- ибо если даже отказаться от IM2 - код выкидки расположить гденить в #d000, то места все равно под спрайт мало останется - при шрифте 8х6 всего 149 строк. а надо еще музыку (надо ли) и код кудато запихивать.

Shadow Maker
15.01.2009, 14:34
Ну вот я домой приду вечером и посмотрю, хватает или нет.

Slider
15.01.2009, 18:17
Shadow Maker, никак, ИНТРО пишет!.. :) Молодец :)

Shadow Maker
15.01.2009, 19:07
Нет, не угадал... Именно скроллер текста, а не интро.

GriV
15.01.2009, 19:09
Не мешайте человеку! может так интра и родится ;-)

Shadow Maker
15.01.2009, 19:47
Не родится. Если все такие любопытные, вот зачем мне это надо:

http://zx.pk.ru/showthread.php?t=5624

psndcj
16.01.2009, 19:25
посмотрел свое интро к Кащеевой цепи - там текста 7 экранов получается - памяти не хватало - дык я сделал раскранченный код не для всего окна - а только для одной строки в 8 пикселов высотой. код вида - pop de:ld (hl),e:inc l:ld (hl),d... сейчас до меня доходит, что проще было использовать обычный ldi - то же самое по тактам выходит =)

то есть проще всего написать будет так:
ld sp,таблица адресов начальных строк экрана
ld hl,начало спрайта-текста (вычисляемое)
ld a,высота окна в пикселах
loop
pop de// получили адес на экране
.(ширина в знакоместах) ldi
dec a:jp nz,loop

так ты потеряешь немного в скорости - но зато выиграешь кучу памяти для спрайта.

Kurles
16.01.2009, 22:16
посмотрел свое интро к Кащеевой цепи - там текста 7 экранов получается - памяти не хватало - дык я сделал раскранченный код не для всего окна - а только для одной строки в 8 пикселов высотой. код вида - pop de:ld (hl),e:inc l:ld (hl),d... сейчас до меня доходит, что проще было использовать обычный ldi - то же самое по тактам выходит =)

то есть проще всего написать будет так:
ld sp,таблица адресов начальных строк экрана
ld hl,начало спрайта-текста (вычисляемое)
ld a,высота окна в пикселах
loop
pop de// получили адес на экране
.(ширина в знакоместах) ldi
dec a:jp nz,loop

так ты потеряешь немного в скорости - но зато выиграешь кучу памяти для спрайта.Точно. Вот буквально вчера нашёл в дебрях исходники своей игрухи KoolEggz, решил ее под формат исходников sjasm'а портировать. Потом родилась идея переделать ее из 128к онли в обычную 48к игру. Стал смотреть что можно заоптимизить - оказалось, что огромные декранченые процедуры нафиг не нужны, можно обычными ldi с pop de как в твоём примере ограничиться - всё влезло даже в фирмоспековское прерывание, правда пришлось поизвращаться с вектором прерываний, так как он в оригинале в #5b был установлен, что черевато в фирменых машинках. Кстати, вопрос не много не в тему - а есть смысл делать 257 байтовую таблицу прерываний, если проект чисто для буржуев? (в трд версии и так эта таблица есть - это что бы в дискриминации не обвиняли :) )

Shadow Maker
16.01.2009, 22:22
Вот как раз для них и имеет смысл, потому что хрен его знает чего у них на шине данных напихано какой периферии и куда там прыгнет...

Добавлено через 12 минут

так ты потеряешь немного в скорости - но зато выиграешь кучу памяти для спрайта.
Моё окошко уже не лезет в инт при таком раскладе :(

Slider
17.01.2009, 01:52
Не родится. Если все такие любопытные, вот зачем мне это надо:
http://zx.pk.ru/showthread.php?t=5624
Я ж говорил, ИНТРО!.. :) :) :) Даёшь релиз Rescate Atlantida! Только ОБЯЗАТЕЛЬНО 48/128к!

psndcj
17.01.2009, 04:43
рассчеты показывают, что можно вывести окно 32х120 вполне, чтобы еще место на музыку осталось - в том же мегабалле 126 высота. я бы на твоем месте если неохота с кодом вохиться, все же бы окошко чуток уменьшил...

Robus
17.01.2009, 06:19
Моё окошко уже не лезет в инт при таком раскладе

Чего-то настальгия пробила ... Захотелось забацать скролл !!! Прикрепляю файл с исходниками ... Файл "scroll.az8" и есть сам скролл. Там есть процедура "INIT", которая за вас всё декранчит. Позволяет установить окошко в любое знакоместо по X(0..31) и Y(0..191) и размером XS(3..32) YS(1..192). Сейчас скомпилен "scroll.trd", в котором лежит файл "1.С". Запускаем эмулятор и пишем в TR-DOS'е - RUN "1" CODE. Наслаждаемся окном размером 32х160 вместе с музыкой и идеальной работой без глюков, и свободно в инте ещё около 7000 тактов. Нажимаем пробел и смотрим сколько оно занимает в прерывании. Что бы откомпилировать запускаем "scroll.bat". Перед процедурой INIT описаны входные параметры ...

Если будет нужно, то можно сделать так, что бы было 32х176 и не дескрировало ... Я делал на скорую руку, поэтому не фиксил дискретизацию. Так же предупреждаю, размер по Х желателен чётный, можно, конечно и не чёт, но будете проигрывать в скорости !!! Ну и не стоит вылазить за пределы экрана !!!

Да, эффект требует под себя 16384 байт памяти, не считая, конечно же, текста и шрифта !!!

И ещё ... Компилится оно в моём ASAM'е ... Но без проблем можно перенести в любой Speccy асм. У меня поддерживаются команды JZ, что автоматом выбирает JR или JP ... Я старался не использовать такие приколы, так что если вдруг забыл в силу привычки, то пробегитесь по тексту и замените на JR !

Наслаждайтесь ...

Shadow Maker
17.01.2009, 12:06
Оно тока на пентагоне в инт лезет... У меня окошко 27 (28) символов по ширине и 17 по высоте. Робус, мона под это заточить чтобы в инт скорпиона полезло и клавиши вверх-вниз прикрутить с ускорением?

psndcj
17.01.2009, 13:34
pop de// 10
.27 ldi // 27*16 = 432
dec a // 4
jp nz,loop // 10
итого на линию = 456 тактов

на 17 знакомест получаем 17*8*456 = 62016 тактов

так как все команды четные - на медленных тачках должно работать также (кажется), остается место на музыку...

Shadow Maker
17.01.2009, 13:56
Да, с 27 лезет. А чего терь с лучом делать, который посередине экрана хреначит? Или кто это там колбасит.

psndcj
17.01.2009, 14:32
ну... надо ловить луч - что тут еще делать то...
типа так
halt
call scrollout2
call music
call control
// все рассчеты
call scrollout1
jr loop

scrollout1 - вывод верхней части окна - столько строк сколько влазит в фрейм
(так как используется стек - чтобы не испортить таблицу адресов - надо успеть восстановить стек до прихода прерывания)
scrollout2 - вывод оставшейся части экрана - по времени луч должен начать рисовать экран

на глаз вроде достаточно вывести 3-4 знакоместа во второй процедуре, и все остальное в первой.

то есть в начале фрейма у нас уже выведена основная часть спрайта, и мы быстро выводим остаток. луч начинает отрисовывать это на экран, и мы по быстрому начинаем строить новый экран...

процедуры ессно хватит одной - надо просто менять переменные на входе.

Robus
17.01.2009, 18:53
Оно тока на пентагоне в инт лезет... У меня окошко 27 (28) символов по ширине и 17 по высоте. Робус, мона под это заточить чтобы в инт скорпиона полезло и клавиши вверх-вниз прикрутить с ускорением?

Ему всё равно ... Теперь уже ... =) Текущий вариант скроллирует 32х156 ... По-моему твои параметры покрывает с головой !!! Конечно же это под фирменный Speccy ... Там заремлена конфигурация под пентагон, где получается 32х168 !!! Под свой размер найди "CALL INIT" и перед ней задаются параметры в регистрах. Установи в нужные тебе координаты и нужные размеры !!! Текущий вариант уже сам подстраивается и не дискрирует. Проге то ли запускать под 128 или 48, теневой экран она не юзает ... Вообщем универсальная !!!

Shadow Maker
17.01.2009, 23:57
Поменял на свои параметры, вылез луч посередине... Выходит не подстраивается сам... Может расскажешь детальнее, что именно подкручивать? И мне кнопочки вверх-вниз, там для этого что именно подкрутить? Я как бы понимаю, что это в LoopPrint где-то, но лучше чтобы ты сказал точнее.

Добавлено через 36 минут

ну... надо ловить луч - что тут еще делать то...
типа так
процедуры ессно хватит одной - надо просто менять переменные на входе.
Ну вот я типа так сделал и вот не помогло, в другом месте колбасит. Инты я так понял надо на рет заменить? И еще теперь музыка на ударниках в инт не лезет... Покажи как надо, а?

Robus
18.01.2009, 10:27
Поменял на свои параметры, вылез луч посередине... Может расскажешь детальнее, что именно подкручивать? И мне кнопочки вверх-вниз, там для этого что именно подкрутить? Я как бы понимаю, что это в LoopPrint где-то, но лучше чтобы ты сказал точнее.

Поменял под твои параметры ... Работает ...


Выходит не подстраивается сам...
В коде есть такой кусок:



LD D,0
LD E,C
LD HL,0
INI8 ADD HL,DE
DJNZ INI8
LD A,H
CP 12
LD HL,EFFECTER1
JR C,INI9
LD HL,EFFECTER2
INI9
LD (INT1+1),HL
LD A,205
LD (INT1),A


Так вот CP 12 определяет "массу" скролла ... Там стояло 15, этим нужно подстраивать ... CP Х сравнивает со старшим байтом размера скроллирования. Если размер более Х*256 то нужно разбивать вывод скролла на две части, если нет, то высвечивается монотонным блоком !

Данная конфигурация подстроена под твои параметры ...

Тебе нкужно графику выводить ? Спрайты там или ещё что-то ? Просто у тебя шла речь только о тексте ...

Shadow Maker
18.01.2009, 10:33
Нет, графику не нужно, начало печати надо с #40c1. И хотя окошко 17x27, печать шрифта надо бы не 8 в высоту а 7. Вот у cj в исходнике это легко меняется, а как у тебя сделать крутилки вверх/вниз и 7 пикселов я догадываюсь, но как-то не очень работает то, что я догадываюсь.

Кстати что-то его все равно подплющивает от луча на скорпионе.

Robus
18.01.2009, 10:51
Кстати что-то его все равно подплющивает от луча на скорпионе.
Странно ... Я вот прямо сейчас смотрю как оно текёть ... Всё идеально ... Нажми пробел, что бы посмотреть где луч на бордюре делит две части скролла !



7 пикселов я догадываюсь
В самом EFFECTE ... Там есть место где меняется WAIT(метка) ... Как досчитает до 7, прибавить один лишний шаг и станет 7 ... К 15:00 сделаю ... На работу сейчас надо ...

Добавлено через 1 минуту
Кстати ... Какие у тебя координат окошка ?

Shadow Maker
18.01.2009, 10:57
Ну я ж адрес в экране сказал. Вот с этого места 27 вправо и 17 вниз. Попозже пересчитаю в обычные.

Луч висит где-то на уровне 6 строчки текста. И вот где-то там и чуть пониже иногда сбивается и проявляется дрожание...

psndcj
18.01.2009, 22:01
ну в моем сорце довольно просто все - думать было лень - поделил окно тупо пополам... на ударниках действительно притормаживает даже на пентагоне =( тут выход один - компилировать не в вортексе (как я от лени), а в обычном пт3, где плеер быстрее... либо если скорости не хватит на скорпе - все таки уменьшать экран по высоте...

scroll сейчас сделан через LDI - адреса кода, музыки и таблицы можно снести максимально кверху (книзу) для увеличения области спрайта.

Shadow Maker
18.01.2009, 22:19
Так, ага, ну походу я остановлюсь на варианте с выкидкой по стеку, ибо оно у меня в память лезет, вот вопрос только в том сколько будет занимать музыка... Ну или если Робус все же допилит мне его вариант, а то пока я тут пробовал его перезаточить под другие размеры - что-то он мне шрифт не шрифт осыпал в размере, а буквы покромсал жестоко с переносами на следующую строчку...

Robus
18.01.2009, 22:23
Луч висит где-то на уровне 6 строчки текста. И вот где-то там и чуть пониже иногда сбивается и проявляется дрожание...

1. Проверенно на фирменном ...
2. Проверенно на SCORPION в эмуляторе ...

Лаж нет ... Как ты и хотел 7 пикселов высота ... В тексте есть команда CP 7 которая и определяет высоту, ноль не ставить !!!


как у тебя сделать крутилки вверх/вниз

Ещё и назад ??? Сделаем ... Тогда появляется вопрос ... А что делать если дошли до конца текста ??? СТОП ??? А если вверх ??? То в начале текста стоп ???

Shadow Maker
18.01.2009, 22:42
Ага. Ну ты вон подгрузи снапшот cj, вот надо прямо вот так же, чтобы оно ускорялось/замедлялось когда жмешь кнопки сильнее/медленнее.

Блин, на эмуле явно дёргается твой скролл от луча... Завтра вот скорпион почищу, на нем проверю для верности.

jerri
19.01.2009, 12:19
Тож чтоли пыль стереть :)

Shadow Maker
19.01.2009, 12:30
:) Давай. А то скоро у всех мозги склеются в серую недумающую массу :)

jerri
19.01.2009, 13:51
итак фонт 32*8
скролл попиксельный
ускоряемый, максимальная скорость - 8
высота окна - 12-16 знакомест 1\2 - 2\3 экрана
ширина 26 - 28 - 32 короче кратно 2 (можно и меньше)

короче вечером порисую :)

Shadow Maker
19.01.2009, 14:27
Юр, там вон параметры какие надо мне чуть повыше находятся. 16 знакомест мало.

jerri
19.01.2009, 17:22
Юр, там вон параметры какие надо мне чуть повыше находятся. 16 знакомест мало.

ну с учетом уменьшения ширины можно и 17 :)
но ширина должна быть четной 26 или 28 хватит?

Shadow Maker
19.01.2009, 21:31
28 тогда.

jerri
23.01.2009, 09:32
Почти закончил... на работе посмотреть не могу :(

45000 тактов на вывод ~8000 на отрисовку новой строки
еще сколько то на обвязку

при создании используются наработки Sage group :)

Shadow Maker
23.01.2009, 10:47
:) Хорошо. Я уж думал ты забил :)

Robus, сорри, на реале все отлично. Но надо тогда и в эмуляторах чтобы работало нормально чтоли... Если разберешься, почему он дрожит в Spectaculator и Unreal - буду благодарен.

jerri
23.01.2009, 11:48
просто у меня нет наработок в области текстосмотрения

Shadow Maker
23.01.2009, 12:03
просто у меня нет наработок в области текстосмотрения
Ды вот и у меня нет. Вот учусь тут :)

Robus
23.01.2009, 22:58
. Но надо тогда и в эмуляторах чтобы работало нормально чтоли... Если разберешься, почему он дрожит в Spectaculator и Unreal - буду благодарен.
Ужен разобрался !!! Точнее говря я не разбирался, я просто знаю почему. Причина - ПиЦи !!! Твой монитор работает єдак герц 60 а нужно 50, вот оно и глючит, темболее в Unreal'е ... Это старая тема, не хочется ворошить прошлое !!! Но с динамическим скроллером всё будет красиво.

Я доделаю полную версию и выложу ... Собственно я уже сделал, осталось долизать глюки с кешированием. На работе сложно делать, каждые 10-20 минут приходится отвлекаться я нужне по-работе ... За выходные постараюсь доделать ...

Работа - зло, мешает свободному полёту мысли ... А из этого вывод, деньги - зло, ибо работаем ради денег. Хотя и не всегда, но тогда нищенская зарплата !!!

Добавлено через 8 минут

Но с динамическим скроллером всё будет красиво.
Тут я оговорился ... Кравсиво будет только тогда, когда будет настоящие 50 кадров в секунду, а тут будет приемлемо или сносно или удовлетворительно !!! Хотя для меня УЖАСНО !!!

Люблю качество ...

Shadow Maker
23.01.2009, 23:24
Тут я оговорился ... Кравсиво будет только тогда, когда будет настоящие 50 кадров в секунду, а тут будет приемлемо или сносно или удовлетворительно !!! Хотя для меня УЖАСНО !!!

Люблю качество ...
Кто ж его не любит... Но к сожалению в современных реалиях на собственно реале скроллер посмотрит дай бог 15% зрителей, остальные будут пользоваться эмулятором. Так что сам понимаешь, приходится подстраивать.

Kurles
24.01.2009, 03:06
Кто ж его не любит... Но к сожалению в современных реалиях на собственно реале скроллер посмотрит дай бог 15% зрителей, остальные будут пользоваться эмулятором. Так что сам понимаешь, приходится подстраивать.ага, во многих комодоровских демах перед запуском даже выбор есть, на эмуле или реале запускаешь :)

Shadow Maker
24.01.2009, 03:17
Ну, у комодора там это как правило из-за мерцающих режимов, а тут немного другое.

jerri
26.01.2009, 07:59
Shadow Maker, у тебя аська есть?

jerri
26.01.2009, 19:35
Короче вот демонстрационный так сказать снапшотик

ща исходник почищу закоментирую и тогда выложу тоже

jerri
26.01.2009, 20:40
тоже но с музыкой

psndcj
26.01.2009, 21:01
молоток! круто!

тока насчет технологий SAGE ты зря написал - у них конструкций типа ld hl,0: push hl: ld hl,0: push hl (и так подряд на всю строку (14 раз) ) не было никогда. так же как и ld hl,#3e3e: push hl: ld hl,#7e3e: push hl - это же все сходу оптимизируется... если уж делать код плавающего размера, то такие вещи просто нужно делать.

но все равно - твой скроллер самый крутой в данной теме - еще бы исходник с произвольно настраиваемым окном и размером шрифта...

jerri
26.01.2009, 21:41
Технологии Sage не в распушении графики
а в работе с текстом
;)

psndcj
26.01.2009, 21:59
не догнал =( судя по всему текст в born dead лежит непакованный - в чем подвох то? а если сделать твой скролл на фуллскрин - 32х24 - будет тормозить?

jerri
26.01.2009, 22:25
под скорпионовский инт максимальный размер с музыкой 18*30
если без музыки - можно вывести 24*26

все упирается в ширину окна

Добавлено через 3 минуты

не догнал =( судя по всему текст в born dead лежит непакованный - в чем подвох то? а если сделать твой скролл на фуллскрин - 32х24 - будет тормозить?

а по поводу Sageй
вроде исходники BornDead свободные были
рекомендую посмотреть ЧТО Именно Монстр делал с текстом ;)

psndcj
27.01.2009, 00:44
сорцы поищу - спасибо за наводку - просто привык смотреть на все в дебаггере - а там текст лежит просто - вся фишка скролла именно в хитром выводе - за счет чего и успевает во фрейм и не только на пентагоне (у мну на профи практически не тормозило). лана - stop flame - буду искать и читать...

jerri
27.01.2009, 20:09
Итак вот оно

я использую связку
UltraEdit + SjAsm
так что не обессудьте исходничек под эту систему

Текст взял у Роба
Музыку у psndcj за что им большое спасибо ;)

Robus
28.01.2009, 02:51
Ды вот и у меня нет. Вот учусь тут

Собственно я так же доделал свою версию ... Она идеально работает на фирменном и НЕфирменном Speccy ...

В архиве:
"SCROLL.AZ8" - "HEIGH_SCROLL" параметр массы скрола !!! Если размер более чем это число, то скролл делится на две части во избежание дискреции !!!

"LOD-FNT.AZ8" - "SCR_H_MAX" параметр высоты символа в фонте.

"SCROLL.BAT" - компиляция проекта.

"AKESIN/SIN.BIN" - синусная таблица скорости скролла.

Размеры 28х136 в координатах 1х48. Маскимальная скорость скролла 7 пикселей. Проект сам уложит всё вместе с текстом и создаст SCROLL.TRD, в который запишет "1.С". Текст он расположит до вектора прерівания. Текущий вектор прерывания 128. Все параметры гибкие. При компиляции в итоге из фонта вынутся только та графика, которая используется в тексте, и оптимизируется. Сам текст так же оптимизируется под максимальную скорость. Количество строк в скролле не должно быть меньше чем количество умещаемых строк в окне. Фонт легко меняется, если надо выложу BMP, которій автоматом будет конвертироваться непосредственно в проект. Не удивляйтесь, что количество проходов аж 14, это компилятор сам просчитывает куда поместить текст скролла до вектора. Кранчь, всё-таки ...

Запуск по прежнему RUN "1" CODE

------------------

jerri Мы как-то параллельно делали. Не со зла ... Просто хотел закончить начатое.

jerri
28.01.2009, 08:14
jerri Мы как-то параллельно делали. Не со зла ... Просто хотел закончить начатое.

Больше вариантов - красивых и разных ;)

Shadow Maker
28.01.2009, 10:28
Да, это точно. Спасибо всем :)

А теперь предположим, что текст надо как бы сделать не 8 в ширину, а настраиваемую ширину тоже. По идее оно должно несложно меняться?

Robus
28.01.2009, 10:58
А теперь предположим, что текст надо как бы сделать не 8 в ширину, а настраиваемую ширину тоже. По идее оно должно несложно меняться?
ААА-а-а-а !!! Ты маньяк !!! Так же нельзя !!! Ведь Coding под Speccy это экстримальный кодинг. Поэтому нужно желать сразу всю задачу. Конечно, можно сделать и настраиваиваемую ширину, но скорость резко упадёт ... То есть максимальная скорость скролла по Y будет меньше чем 7 !!!

Сразу скажу, что с ходу можно сделать ширину 4 !!! Чуть труднее будет 6 !!! Но 5 или 7 сразу сожрёт время на печать строки раза в три !!!

Поэтому подумай, какие параметры ты хочешь ?

jerri
28.01.2009, 10:58
ну можно сделать листалку для 64 символов в строке
нада всеголишь + 1 еще фонт (2048) и чуть чуть поменять процедуру печать (Borndead)
и еще одну для 42 - эту хз как делать в 48к -фонт шире 8 получается
и еще одну для 51 - это еще веселее там символ 5 пикселов
а еще одну для пропорционального шрифта

но для этого всего не жди 50 фпс :)

Shadow Maker
28.01.2009, 13:59
:) Понятно. Короче если не кратно двум - тока декранчить в спрайт, иначе не будет 50 fps...

Добавлено через 49 секунд

Поэтому подумай, какие параметры ты хочешь ?
Да так-то мне и 8 достаточно. Но да, 6-пиксельные шрифты было бы неплохо...

jerri
29.01.2009, 09:05
во фрейм по BD технологии можно сделать только 32 и 64 символа в строке
42 символа в 48кб сделать нереально
остальные - да только декранчить в спрайт или скролл делать 25 фпс
60000 тактов должно хватить для отрисовки строки

так что если тебе хватит 25 фпс можно сделать
пропорциональную печать ;)

Robus
29.01.2009, 18:34
42 символа в 48кб сделать нереально
Ну ... Скожу честно - реально ... Всё зависит от условий !!! Если ты захочешь двикать по символьно, то, конечно, не успеет ... Но скролл по 1 пикселю - точно успеет !!! Да же на 2 успеет !!!

jerri
30.01.2009, 08:43
Ну ... Скожу честно - реально ... Всё зависит от условий !!! Если ты захочешь двикать по символьно, то, конечно, не успеет ... Но скролл по 1 пикселю - точно успеет !!! Да же на 2 успеет !!!

ну в том то и фикус пикус что для ЗАДАННЫХ условий (50 фпс 48к и ускоряемый просмоторщик текста) задача невыполнима

но для 25 фпс вполне так ничо

т.е 1 фрейм обновляем
во 2ой отрисовываем

причем хватит даже на пропорциональную печать если через таблицу