Page 1 of 2

ULA+

PostPosted: Thu, 26.09.2013 23:36:15
by moroz1999
http://zxart.ee/eng/graphics/database/p ... sc/page:1/
Прошу любить и жаловать. В основном конверсии как proof of concept. А еще я его зачем-то совместил с палитрами orthodox/electroscale итд, хотя у ulaplus палитра задаётся окончательно и недвусмысленно в половинчатом RGB9.

Re: ULA+

PostPosted: Fri, 27.09.2013 04:50:59
by diver
Прикольный формат. Даже конверсии впечатляют. Хотя и видно, что каша.

http://zx.maros.pri.ee/eng/authors/c/cheveron/palette/
Жму ссылку, попадаю не в картинку, а в профиль художника.

Re: ULA+

PostPosted: Fri, 27.09.2013 08:44:26
by moroz1999
diver wrote:http://zx.maros.pri.ee/eng/authors/c/cheveron/palette/

Спасибо! Название "palette" пересекается с параметром "palette". Придумаю что-нибудь скоро.

Re: ULA+

PostPosted: Fri, 27.09.2013 10:30:37
by moroz1999
diver wrote:Прикольный формат

Кстати, довольно сложный.
Вместе с картинкой идут 64 байта палитры. Палитра делится на 4 таблицы по 16 байт, в пределах одного знакоместа можно использовать за раз только одну таблицу. Каждая таблица делится пополам на 8 возможных цветов ink и 8 возможных цветов paper. Цвета берутся из половинчатой (засчет синего цвета) RGB9-палитры: RGB9 требует 9 бит на пиксель, а в байт влезает только восемь бит, поэтому на красный-зеленый идет по 3 бита, а на синий - 2 бита точности, так что формально палитру можно назвать RGB8, хоть такого стандарта и нет (?).

Как это всё учитывать при ручной отрисовке - ума не приложу, надо попробовать. С другой стороны, вроде как довольно много возможных комбинаций цвета выходит, может никакой проблемы и не встало бы.

Re: ULA+

PostPosted: Fri, 27.09.2013 10:35:57
by moroz1999
Немного подумав, сообразил, что самый простой вариант для пробы - рисуем картинку в нормальном режиме, подбираем палитру, подрихтовываем.
Или еще проще - подбираем палитру, ставим её в zxgfx (внешним файлом, он это умеет), и рисуем прямо нужными цветами, можно по частям.

Re: ULA+

PostPosted: Fri, 27.09.2013 10:38:44
by g0blinish
diver wrote:Прикольный формат. Даже конверсии впечатляют. Хотя и видно, что каша.

какой конвертер - такая каша. твоя конверсия Exolon выглядела бы еще ужаснее.

Re: ULA+

PostPosted: Fri, 27.09.2013 10:49:22
by diver
moroz1999 wrote:Немного подумав, сообразил, что самый простой вариант для пробы - рисуем картинку в нормальном режиме, подбираем палитру, подрихтовываем.

moroz1999, это универсальный принцип рисования в любом ограниченном режиме - рисовать в цвете на точку, затем рихтовать конвертором, затем допиливать вручную. Я сейчас именно так и рисую в стандарте и мультиколоре. После этого постепенно начинаешь рисовать вообще тупо на глаз по сетке в обычном пиксельном редакторе.

g0blinish wrote:какой конвертер - такая каша. твоя конверсия Exolon выглядела бы еще ужаснее.

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

Re: ULA+

PostPosted: Fri, 27.09.2013 11:47:09
by g0blinish
diver wrote:g0blinish, да ты просто оракул какой-то, умеешь определять как выглядели бы мои конверсии.

даже боюсь уметь определять :smoke:

Re: ULA+

PostPosted: Thu, 03.10.2013 09:18:46
by g0blinish
интересно, а как выбирать clut?
Code: Select all
 ld hl,#4000
lp0:ld (hl),l:inc hl
 ld a,h:cp #5B:jr nz,lp0

;LET reg = 48955 : LET dat = 65339
;Switch the mode on
;OUT reg, 64: OUT dat, 1
;Switch the mode off
;OUT reg, 64: OUT dat, 0
 ld bc,48955,a,64:out (c),a
 ld bc,65339,a,1:out (c),a

;DEF FN c(r,g,b)=(g*32)+(r*4)+INT (b/2)
;Set a colour OUT reg, P: OUT dat, FN c(R,G,B)
;P is the palette entry to change (0-63)
;R, G and B are the red and green levels (0-7)
 ld bc,48955,a,0:out (c),a
 ld bc,65339,a,(6*32):out (c),a
 ld bc,48955,a,1:out (c),a
 ld bc,65339,a,(5*32):out (c),a


ничо не понимаю >(

Re: ULA+

PostPosted: Thu, 03.10.2013 10:33:50
by TS-Labs
g0blinish wrote:интересно, а как выбирать clut?

http://scratchpad.wikia.com/wiki/ZX_Spe ... r_RGB_Mode
64 ячеи палитры. Номер ячеи 0xBF3B = 0-63. 0xFF3B дата для ячеи.
Включить шайтан-арба: 0xBF3B = 64, 0xFF3B = 1.
The complete index can be calculated as
ink_colour = (FLASH * 2 + BRIGHT) * 16 + INK
paper_colour = (FLASH * 2 + BRIGHT) * 16 + PAPER + 8

Re: ULA+

PostPosted: Thu, 03.10.2013 12:35:12
by g0blinish
TS-Labs wrote:ink_colour = (FLASH * 2 + BRIGHT) * 16 + INK
paper_colour = (FLASH * 2 + BRIGHT) * 16 + PAPER + 8

/*тупить как Алонер mode on

что такое ink_colour и paper_colour? цвета для экрана? и к чему тогда INK и PAPER?

Re: ULA+

PostPosted: Thu, 03.10.2013 12:42:52
by moroz1999
g0blinish wrote:что такое ink_colour и paper_colour? цвета для экрана? и к чему тогда INK и PAPER?

Там система такая:
1. Вся палитра делится на четыре куска. Первую половину каждого куска можно использовать для INK, вторую для PAPER.
2. Цвет задаётся по-старому, на всё знакоместо.
3. Старшие два бита задают кусок палитры (один из четырех).
4. Три бита PAPER задают номер цвета Paper от одного до восьми (вторая половина куска палитры).
5. Три бита INK задают номер цвета Ink от одного до восьми (первая половина куска палитры).

Re: ULA+

PostPosted: Thu, 03.10.2013 13:35:06
by g0blinish
moroz1999 wrote:1. Вся палитра делится на четыре куска

тогда как проще к палитре 1-4 обратиться?
ясно, что если записать в атрибуты fb00000000(flash/bright), это и будет:
moroz1999 wrote:. Старшие два бита задают кусок палитры (один из четырех).

Re: ULA+

PostPosted: Thu, 03.10.2013 13:48:13
by moroz1999
да, то есть:
00 000 000 - Кусок палитры номер 0, paper номер 0, Ink номер 0
01 000 000 - Кусок палитры номер 1, paper номер 0, Ink номер 0
11 110 010 - Кусок палитры номер 3, paper номер 6, Ink номер 3

Соответственно, мы не можем использовать в Ink цвет, заданный для Paper, и наоборот, хотя кусок палитры один и тот же.
То есть практически в пределах одного знакоместа мы работаем с 16 цветами, первая половина которых может быть заюзана только для Ink, а вторая - только для Paper.

Re: ULA+

PostPosted: Thu, 03.10.2013 14:00:17
by TS-Labs
g0blinish wrote:что такое ink_colour и paper_colour?

Номера цвета в таблице (= индексы).
Т.е. палитра идет так:
8 цветов для инка, если брайт и флэш = 0
8 цветов для пейпера, если брайт и флэш = 0
....
8 цветов для пейпера, если брайт и флэш = 1
Итого 64 цвета.
Допустим у тебя есть аттрибут: 0х87. В бинаре это: 10000111. В разложенном бинаре: 10 000 111.
Терь:
10 - номер палитры (палитра 2)
000 - папер (0)
111 - инк (7).
Вычисляем ячеи: для инка - 2*16+7=39, для папера - 2*16+0=32.
Терь смари: если у тебя пиксель будет 1, то берется цвет инка (39 ячея), если 0 - папера (32 ячея).

Re: ULA+

PostPosted: Thu, 03.10.2013 14:08:23
by g0blinish
спасибо за объяснение, я пока не понимаю, куда отнести индекс палитры, попробую задать цвет.
Жаль, что приходится использовать для проверки уебищный х128...

Re: ULA+

PostPosted: Thu, 03.10.2013 14:13:14
by TS-Labs
Индекс - это номер ячеи.

Re: ULA+

PostPosted: Thu, 03.10.2013 16:09:00
by g0blinish
не знаю, на что и валить, но вот что выходит.
Code: Select all
   device zxspectrum128
        ORG #6000
begin

 ld hl,#4000
lp0:ld (hl),l:inc hl
 ld a,h:cp #5B:jr nz,lp0

;LET reg = 48955 : LET dat = 65339
;Switch the mode on
;OUT reg, 64: OUT dat, 1
;Switch the mode off
;OUT reg, 64: OUT dat, 0
 ld bc,48955,a,64:out (c),a
 ld bc,65339,a,1:out (c),a

; ld a,$07,($5800),a;$87

;$87=10 000 111(PPpppiiii)
;index1:2*16+7=39 ink    ink_colour = (FLASH * 2 + BRIGHT) * 16 + INK
;index2:2*16+0=32 paper  paper_colour = (FLASH * 2 + BRIGHT) * 16 + PAPER + 8
 ld bc,48955,a,39:out (c),a;palette entry
 ld bc,65339,a,(7*4):out (c),a

 ld bc,48955,a,32:out (c),a;palette entry
 ld bc,65339,a,(1*32+7*4):out (c),a

 jr $

;DEF FN c(r,g,b)=(g*32)+(r*4)+INT (b/2)
;Set a colour OUT reg, P: OUT dat, FN c(R,G,B)
;P is the palette entry to change (0-63)
;R, G and B are the red and green levels (0-7)
; ld bc,48955,a,0:out (c),a
; ld bc,65339,a,(6*32):out (c),a
; ld bc,48955,a,1:out (c),a
; ld bc,65339,a,(5*32):out (c),a


end
   display /d,end-begin
   savesna "!void.sna",begin



Re: ULA+

PostPosted: Tue, 21.01.2014 16:34:56
by LessNick
moroz1999 wrote:Прошу любить и жаловать. В основном конверсии как proof of concept.


404

Requested page has not been found. It has been probably renamed or united with something else.

Re: ULA+

PostPosted: Tue, 21.01.2014 16:59:13
by moroz1999
При добавлении музыки формат ссылок поменялся, поэтому некоторые старые ссылки не работают вовсе.
Обновил ссылку в первом посте.
http://zxart.ee/eng/graphics/database/p ... sc/page:1/

Re: ULA+

PostPosted: Tue, 21.01.2014 17:25:41
by g0blinish
мороз, посохом промазал, не?

Re: ULA+

PostPosted: Tue, 21.01.2014 18:46:37
by moroz1999
да не, должно работать теперь.

Re: ULA+

PostPosted: Wed, 22.01.2014 13:55:13
by g0blinish
moroz1999 wrote:да не, должно работать теперь.

ну лови тогда фидбек:
-при вводе неправильного пароля нет сообщения
-нет форму восстановления пороля.

Re: ULA+

PostPosted: Wed, 22.01.2014 17:11:34
by moroz1999
Спасибо, сделаю.

Re: ULA+

PostPosted: Fri, 24.01.2014 09:47:58
by g0blinish
Image

Мож кто припомнит картинку справа и наверху?