Хранение бордера

Картины, рисунки и наброски

Postby moroz1999 » Sat, 10.08.2013 22:53:48

Дайвер сделал работу, активно задействующую бордер.
Предлагаю оговорить формат хранения, чтобы как-нибудь унифицировать и сделать универсальный просмотрщик на реале и на zxart.
Какие есть вопросы?
1. Сколько точно строк делать по вертикали?
2. Какое максимальное разрешение? А если с техникой алоне кодера в деме с котом? Или оно не применимо для статики?
3. Как хранить в памяти, чтобы просмотрщик с ума не сошел?
User avatar
moroz1999
 
Posts: 1872
Joined: Wed, 01.08.2012 11:23:51

Postby TS-Labs » Sat, 10.08.2013 23:33:48

Предлагаю хранить в формате run-length такого типа: цвет бордера, кол-во пикселей. 1 пиксель = 1 такт 7МГц или 0.5 такта 3.5 - этого достаточно. Цвет бордера с брайтом, ибо тиритищски такую картину можно вывести на АТМ. Чтоб потом 2 раза не вставать.
Сначала перевести все тысячи картинок (хе-хе) вручную в такой формат (я это могу автоматизировать в анрыле, это недолго). Далее можно будет сваять конвертер, который позволит из этого формата собирать модуль с "плеером". Еще далее, было б труЪ сделать редактор. Ограничение ессно накладывается на минимальный размер элемента изображения, зависит от реального кол-ва тактов, которое займут соответствующие команды проца. Т.е. заранее в процессе рисования учитывать реальные условия, чтоб не создать файл, который физически нельзя будет отобразить на железе.
Предлагаю сразу учесть 2 варианта: 3.5МГц для классики и 7 - для пентевы и других клонов с новейтовой турбой 7МГц. Хранить все в условном формате 7МГц. Для 3.5 просто устанавливать более жёсткие ограничения на разрешение.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sun, 11.08.2013 02:47:57

Уточнение: в run-length хранить только бордерную составляющую. Пиксельная часть - все те же 6912.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby introspec » Sun, 11.08.2013 03:47:04

Я сейчас работаю над более-менее универсальным просмотрщиком для статического бордера. Для работы дайвера я написал очень быстрый говнокод для пентагона (что там с релизом я не знаю, но программа существует); скоро будет доделана более человеческая программа, поддерживающая всю классику, пентагон и скорпион. Есть несколько проблем и ограничений, которые стоит обсуждать.

1. Над экраном у 48к и пентагона - 64 строки. У 128к - 63 строки. Я считаю, нужно хранить 64 строки. В самом экране 192 строки. Под экраном у классики 312-64-192-16=40 строк. Под экраном у пентагона 48 строк. Эмуляторы рисуют по-разному; сочетания реалов с мониторами тем более непредсказуемы. С моей точки зрения нужно хранить 64+192+48=304 строки, т.е. случай максимум, и иметь в виду, что просмотрщику придётся обрезать картинку при показе на конкретном компьютере.

2. Есть существенная разница между тем, что можно рисовать на пентагоне и тем, что можно рисовать на всех остальных машинах. Фактически, бордюрный пиксель на пентагоне - 2х1 обычных пикселя. Бордюрный пиксель на классике и других клонах - 8х1 обычных пикселя. Если мы хотим переносимости между моделями, есть смысл остановиться на 8х1, хотя я могу себе представить и другие точки зрения на этот вопрос. Картинка дайвера - в 8х1. Я пишу свой просмотрщик для 8х1. Технически, по реализации, пиксели 2х1 мало чем отличаются, но мне непонятно, вот так, с ходу, что просмотрщику делать с картинкой 2х1 на 8х1 компьютере.

3. Картинку 8х1 я буду хранить в виде последовательности чисел - цветов бордерных "пикселей" 8х1 слева направа, сверху вниз. Всего в строке на спектруме 224 или 228 тактов, что соответствует 56 или 57 знакоместам. Я не стал детально разбираться в размерах вертикальных полей для разных моделей; у себя я буду хранить в каждой строке 48 чисел, т.е. 48 знакомест. Это перекрывает поля во всех известных мне эмуляторах и близко к теоретическому максимуму ширины по отрисовке. Итого, один кадр занимает 6912+48*304=6912+14592=21504 байта. Это очень неэффективно, но удобно в работе и отлично жмётся. Конечно, есть смысл думать о более компактном способе хранения. Я пока не вполне для себя определился, как "лучше" и всерьёз думаю выкинуть все пиксели оказывающиеся "под экраном"; в это случае потребуется хранть 6912+48*64+(8+8)*192+48*48=6912+8448=15360 байт. Другой очевидный вариант - хранить по два цвета на байт, т.е. 6912+48*304/2=6912+7296=14208 байт, ну или 11136 байт если ещё и не хранить данные под экраном. Так как пока что я делаю тупой просмотрщик статической графики, я не вижу для себя смысла быть особенно бережливым. Хотя, пока просмотрщик ещё в работе и я для себя не вполне определился, чего я хочу больше всего :)

Если бы я попробовал быть настолько же расточительным для пентагоновских 2х1 пикселов, мне бы не хватило машинной памяти.

4. Хотя картинка и состоит из "пикселей" 8х1, никакой просмотрщик не сможет менять цвет чаще чем один раз за три таких пикселя. За выполнением этого правила должен следить художник. Исключения - пиксели около кромок бордюра и экрана (реализация этого принципа - это одна из причин ограничения визуальной ширины картинки в 48 знакомест). Если скормить картинку, нарушающую этот принцип в просмотрщик, ожидаемый результат не будет получен, картинка будет отображена неверно. В принципе, можно ловить такие моменты в просмотрщике, но, имхо, более полезно бы было ловить это в пиксельном редакторе, на стадии рисования.

5. Бордюрный гигаскрин будет реализуем на этом движке почти тривиально, хотя в 48к могут возникнуть различные затруднения с объёмом памяти, занятым просмотрщиком. Я не вижу совершенно никаких технических трудностей для реализации такого эффекта на 128к машине. Бордюрный гигаскрин мы обсуждали и имеем в виду, но пока больше озабочены реализацией стандартных цветов на стандартных машинах. В моём понимании, бордюрный гигаскрин интереснее для картинок в гигаскрине, так что есть смысл делать специальный, отдельный просмотрщик под это дело, работающий только на 128к машинах.

Кажется, ничего не забыл :)
User avatar
introspec
 
Posts: 579
Joined: Sun, 14.07.2013 15:36:47

Postby diver » Sun, 11.08.2013 06:54:35

introspec, про количество цветов на бордере еще не написал. Возможно или нет запилить сразу все 8 цветов?
User avatar
diver
 
Posts: 735
Joined: Sat, 29.06.2013 00:10:07

Postby diver » Sun, 11.08.2013 07:01:36

Кстати, еще смежный вопрос. Если в 6912 будет мультиколор, то любой бордер будет возможно показывать с любым мультиколором?
User avatar
diver
 
Posts: 735
Joined: Sat, 29.06.2013 00:10:07

Postby g0blinish » Sun, 11.08.2013 08:06:37

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

с .scr будет путаница, кому 6912 подавай, а кому-то .scr и все тут.

сделайте дополнительный файл .border и дело с концом)
[x] No Screenshot
User avatar
g0blinish
Упырь говнофорума
 
Posts: 3641
Joined: Tue, 18.06.2013 10:59:01

Postby diver » Sun, 11.08.2013 10:01:47

g0blinish wrote:мне кажется, это все изврат.
некий чиптюнский формат тащит с собой джва файла - трэк и саунд банк, расширения имен файлов разные, имя одинаковое.

с .scr будет путаница, кому 6912 подавай, а кому-то .scr и все тут.

сделайте дополнительный файл .border и дело с концом)

Пока так и есть, я сдавал на пати дамп бордера и scr отдельно. Вопрос в том, насколько обобщать формат. Мы пока ограничились возможностями классического спектрума. У пентагона возможности шире (позиционирование 2 пикселя, длина линии - короче), у атм еще шире (брихт на бордере).

Я пока планирую рисовать только под классику.
User avatar
diver
 
Posts: 735
Joined: Sat, 29.06.2013 00:10:07

Postby g0blinish » Sun, 11.08.2013 10:04:18

diver wrote:Пока так и есть, я сдавал на пати дамп бордера и scr отдельно. Вопрос в том, насколько обобщать формат

пресловутый g2f позволяет выгружать картинку в .xex(исполнимый бмнарный файл) и в .asm.
может, introspec это осилит?)
[x] No Screenshot
User avatar
g0blinish
Упырь говнофорума
 
Posts: 3641
Joined: Tue, 18.06.2013 10:59:01

Postby diver » Sun, 11.08.2013 15:25:38

Зачем. Он делает вьювер для дампа, пофикшенный под все машины.
User avatar
diver
 
Posts: 735
Joined: Sat, 29.06.2013 00:10:07

Postby g0blinish » Sun, 11.08.2013 15:45:59

diver wrote:Он делает вьювер для дампа, пофикшенный под все машины.

Жаль. БордерТрон гонит картинку под разные тайминги, хотя и кривовато имхо. или руки мои кривоватые :smoke:
[x] No Screenshot
User avatar
g0blinish
Упырь говнофорума
 
Posts: 3641
Joined: Tue, 18.06.2013 10:59:01

Postby introspec » Sun, 11.08.2013 18:54:55

Чё за дурацкий форум, даже цитирование в хроме не пашет... :(

diver, вопрос 1: там есть небольшая заминка, из-за которой сделать все 8 бордюрных цветов "в лоб" и одновременно не выходит. Если писать код вручную, можно импровизировать, научить этому универсальный просмотрщик сложнее. На данный момент я вожусь с одним грязным хаком, который, если мне сойдёт это с рук, решит эту проблему. В противном случае, возможно, нам придётся пока ограничить художников 6-ю цветами из 8 возможных. Точнее, 5-ю цветами + чёрным.

diver, вопрос 2: мультиколор+бордюр, вообще, сложен, т.к. хотя бордерный просмотрщик и делает немного, он "простаивает" очень нерегулярно, и этими простоями сложно воспользоваться. В самом общем случае, с достаточно пёстрым бордером, времени реально останется очень мало. При этом, не все потеряно: если ограничиться 128к машинами, можно совершенно тривиально прикрутить к бордюру мультиколор 8х4. Т.е., в моём представлении, самыми толковыми режимами для статики на ZX кажутся мне либо мультиколор 8х2 без бордюра, либо мультиколор 8х4 с бордюром. Плюс вариации гигаскринов: либо простой гигаскрин (с гигаскриновым же бордюром), либо мультигига 8х4 с гигаскриновым бордером (самый сложный тут вариант, но вполне реализуем).

g0blinish, можно будет сделать конвертор из бордертрона в мой формат, если есть желание/необходимость, хотя мне это не очень интересно. Мой просмотрщик уже сейчас может показать любую графику из бордертрона (пока пентагон only, но это чисто техническая заминка). Обратное неверно.
User avatar
introspec
 
Posts: 579
Joined: Sun, 14.07.2013 15:36:47

Postby g0blinish » Sun, 11.08.2013 18:59:17

introspec wrote:g0blinish, можно будет сделать конвертор из бордертрона в мой формат, если есть желание/необходимость, хотя мне это не очень интересно.

нет, речь шла о фиче - выгрузке результата в .ASM. А с бордертроном сколько ни ебись, по краям не получишь ничего - только картинку сверху и снизу.
и в довершение всем несчастьям - кратный 4 тактам код впихивать просто задолбаешься.
[x] No Screenshot
User avatar
g0blinish
Упырь говнофорума
 
Posts: 3641
Joined: Tue, 18.06.2013 10:59:01

Postby introspec » Sun, 11.08.2013 19:01:29

Забыл про asm. Сделать можно всё что угодно, но не очень понятно, насколько это полезно. Итоговый ассемблер довольно хрупкий, зависит от времянок машин и прочих суеверий, с реально анальным типом кода, особенно чтобы добавить левор и правое поле под классикой. Музыку просто так на это на наложишь (т.е. можно, но нужно *реально* знать что делаешь), добавить эффект, не понимая происходящего, тоже почти без шансов. Не то чтобы мне жалко, но я реально не вижу, кому такой ассемблер может пригодиться.

MGDMA - мой лучший код на спектруме, и даже он никому нафиг не сдался. Не верю, что бордерный говнокод может заинтересовать кого-то даже теоретически.
User avatar
introspec
 
Posts: 579
Joined: Sun, 14.07.2013 15:36:47

Postby introspec » Sun, 11.08.2013 19:05:17

Ещё одно соображение: мой просмотрщик будет смотреть на текущую машину, и генерировать код бордера на лету.
Т.е., наверное, нужно думать о релизе кода самого просмотрщика, чтобы вставлять в чужие программы.
User avatar
introspec
 
Posts: 579
Joined: Sun, 14.07.2013 15:36:47

Postby LessNick » Sun, 11.08.2013 20:05:49

introspec wrote:Чё за дурацкий форум, даже цитирование в хроме не пашет...


Не надо гнать на форум! :) Для того, что бы сделать цитирование, нужно сначала выделить то, что ты хочешь цитировать ;) в отличии от…
(∩。•o•。)っ.゚☆。・ TS-Conf для PentEvo — это классический Pentagon 128k для тех кто хочет больше!
User avatar
LessNick
грей сашу — сашу грей
 
Posts: 975
Joined: Thu, 26.07.2012 15:00:53
WEBSITE: http://fishbone.untergrund.net/

Postby introspec » Sun, 11.08.2013 20:17:36

breeze wrote:Не надо гнать на форум! Для того, что бы сделать цитирование, нужно сначала выделить то, что ты хочешь цитировать в отличии от…

Крестный поклон, добрый человек, век помнить буду, и детям накажу! :)))

А что нужно выделить, чтобы армия смайлов из редактора сгинула?
User avatar
introspec
 
Posts: 579
Joined: Sun, 14.07.2013 15:36:47

Postby LessNick » Sun, 11.08.2013 23:31:14

Тест :)

introspec wrote:А что нужно выделить, чтобы армия смайлов из редактора сгинула?


Совсем сбоку их не убрать, но в профиле можно отключить:

enelnelk.png
enelnelk.png (33.82 KiB) Viewed 23409 times
(∩。•o•。)っ.゚☆。・ TS-Conf для PentEvo — это классический Pentagon 128k для тех кто хочет больше!
User avatar
LessNick
грей сашу — сашу грей
 
Posts: 975
Joined: Thu, 26.07.2012 15:00:53
WEBSITE: http://fishbone.untergrund.net/

Postby TS-Labs » Sun, 11.08.2013 23:43:41

introspec wrote:Итоговый ассемблер довольно хрупкий, зависит от времянок машин и прочих суеверий

Есть такие ключевые слова: fully deterministic operation. Спектрум работает примерно так же. Так что претензии про суеверие не принимаются. А вот неумение рассчитать такты, да еще при наличии эмуляторов, это уже ваще.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby introspec » Mon, 12.08.2013 00:14:48

breeze wrote:Совсем сбоку их не убрать, но в профиле можно отключить

Да нет, в постах мне по барабану, мне бы в редакторе их убрать. Они мне на лэптопе просто всё окно выносят, что бесит.
User avatar
introspec
 
Posts: 579
Joined: Sun, 14.07.2013 15:36:47

Postby introspec » Mon, 12.08.2013 00:28:29

TS-Labs wrote:Есть такие ключевые слова: fully deterministic operation. Спектрум работает примерно так же.

LOL, что-то толсто очень :)

Я же только придуриваюсь скромным, а цену себе знаю.

Отвечу вопросом на вопрос: сколько ты знаешь реальных программ на спектруме, которые бы овладели детерминизмом платформы до такой степени, чтобы без стонов, визгов и подкручивания поддерживали бы реалтайм выравнивание до пикселя (т.е. не строки, а именно с вертикальными кромками) и работали бы, скажем, на всех вариациях классики, пентагоне и скорпионе? Т.е. не пять фиксов под пять компов, а именно поддерживали, из коробки. Если что, интерес у меня неподдельный, т.к. таких программ реально немного. Я лично знаю только одну.

Если ближе к делу, когда я говорю, что код хрупкий, я не имею в виду, что мне трудно его написать. Я имею в виду что, объективно, по факту, такой код могут сейчас компетентно парсить примерно человек десять-пятнадцать на платформе, но они его и без меня напишут. Для всех остальных это что-то типа трансформаторной будки: выглядит просто, но при попытке влезть бьёт током.
User avatar
introspec
 
Posts: 579
Joined: Sun, 14.07.2013 15:36:47

Postby LessNick » Mon, 12.08.2013 02:05:42

introspec wrote:мне бы в редакторе их убрать.


Без проблем. Если не нравится тот или иной элемент на сайте можно с помощью дополнения Stylish (есть под FF/Chrome) написать своё правило и вуаля :) Например для этого форума, что бы скрыть блок смайликов достаточно прописать:

Code: Select all
div #smiley-box {
  display: none;
}


klemflwkenfwlekfnw.png
klemflwkenfwlekfnw.png (20.08 KiB) Viewed 23391 times
(∩。•o•。)っ.゚☆。・ TS-Conf для PentEvo — это классический Pentagon 128k для тех кто хочет больше!
User avatar
LessNick
грей сашу — сашу грей
 
Posts: 975
Joined: Thu, 26.07.2012 15:00:53
WEBSITE: http://fishbone.untergrund.net/

Postby TS-Labs » Mon, 12.08.2013 02:17:20

introspec wrote:сколько ты знаешь реальных программ на спектруме, которые бы овладели детерминизмом платформы

Не знаю сколько. Но не вижу проблем такие программы создавать. А то, что ручки кривые, и демки пишут наощупь - знаю.
Кодебастерсам например не составило труда написать 100500 эффектов, да еще портировать под пентагон тот же Shock Megademo.
Касательно портабильности - глупость ящитаю. Сделать универсальный код нельзя. Как ты портируешь пентагон под резинку - тупо не хватит тактов. А привязываться к резинке - бред.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby introspec » Mon, 12.08.2013 02:32:46

TS-Labs wrote:Но не вижу проблем такие программы создавать. А то, что ручки кривые, и демки пишут наощупь - знаю.

Ну это мы споставляем категорию "как должно быть" с категорией "как есть". Если я сделаю генератор ассемблера, у людей будут возникать проблемы типа, как добавить AY или сделать эффект транзиции. И я им даже помочь не смогу, т.к. любое решение таких вопросов - демоэффект из высшей лиги, без вопросов.

TS-Labs wrote:Сделать универсальный код нельзя. Как ты портируешь пентагон под резинку - тупо не хватит тактов.

Именно поэтому мы привязаны к резинке. Картинку дайвера показать на резинке - можно. Даже на 48к.

И не нужно называть мои религиозные предпочтения бредом! :)
User avatar
introspec
 
Posts: 579
Joined: Sun, 14.07.2013 15:36:47

Postby introspec » Mon, 12.08.2013 02:33:42

breeze wrote:Например для этого форума, что бы скрыть блок смайликов достаточно прописать

Wow. Вот это я понимаю жизнь! Спасибо большое, сорри что отнял так много времени.
User avatar
introspec
 
Posts: 579
Joined: Sun, 14.07.2013 15:36:47

Next

Return to Graphics

Who is online

Users browsing this forum: No registered users and 1 guest

x