Subversion Repositories NedoOS

Rev

Rev 805 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

єэштхЁёры№эр  ярышЄЁр (atmuni16.act фю чрьхэ√ эр Єхыхёэ√х, skin16.act яюёых, soft16.act ё ь уъшьш ЎтхЄрьш тьхёЄю ўшёЄ√ї+3,2,2 тьхёЄю M):
R,G,B
юёэютэ√х ЎтхЄр, ўЄюс√ ьюцэю с√ыю ёъюэтхЁЄшЄ№ тё╕ (ьюцэю юёЄртшЄ№ Єюы№ъю 0RGBW + 3 Єхыхёэ√ї ЎтхЄр? hue c,m,y сєфєЄ Єюы№ъю ё яюью∙№■ чрётхЄюъ):
0,0,0
0,0,3 B (1,1,2 ь уўх)
3,0,0 R (2,1,1 ь уўх)
3,0,3 M (2,1,2 ь уўх) (3,2,1 фы  34n1) - чрьхэшЄ№ эр Єхыхёэ√щ 3,2,1? (фы  ь уъшї 3,2,2)
0,3,0 G (1,2,1 ь уўх)
0,3,3 C (1,2,2 ь уўх) - чрьхэшЄ№ эр Єхыхёэ√щ 3,2,2?
3,3,0 Y (2,2,1 ь уўх) - чрьхэшЄ№ эр Єхыхёэ√щ 2,1,1?
3,3,3
ёхЁ√х:
2,2,2
1,1,1 (new)
ъюЁЁхъЎш  Єхэхщ:
0,0,1 (new)
0,1,0 (new)
1,0,0 (new)
ъюЁЁхъЎш  чрётхЄюъ:
3,3,2 (new)
3,2,3 (new)
2,3,3 (new)

ъръ ъюэтхЁЄшЁютрЄ№ т эх╕?
эєцэр ЄрсышЎр RGB->colorindex ш ЄрсышЎр colorindex->RGB (яю эхщ сєфхЄ фхырЄ№ё  floyd-steinberg)
р ъръ фхырЄ№ diamond? эрфю ъръ-Єю эрїюфшЄ№ RGB->4xcolorindex, р яюЄюь ьхцфє ¤Єшьш 4 ЎтхЄрьш ЄхъёЄєЁшЄ№
р ъръ фхырЄ№ hires? эрфю ъръ-Єю эрїюфшЄ№ 4 ыєў°шї ЎтхЄр фы  ърцфющ чюэ√ ш ўхЁхфютрЄ№ шї ўхЁхч ёЄЁюўъє? сєфєЄ яЁюсыхь√ ё чюэрьш, уфх хёЄ№ ў╕Ёэ√щ ш  Ёъшх ЎтхЄр, эрфю сєфхЄ шьхЄ№ 2 ў╕Ёэ√ї

ъръющ ЇюЁьрЄ їЁрэхэш  ърЁЄшэъш т DOM? 24bit цшЁэю! 16bit? шыш 8bit схч фшЇхЁшэур ё єэштхЁёры№эющ ярышЄЁющ
ърър  єэштхЁёры№эр  ярышЄЁр 256?
р) RRRGGGBB?
с) YYYYYUUVV?

т) ЁрчсшЄ№ яю эрё√∙хээюёЄ ь (эр ATM тшфэю 3), эр ATM тшфэю 18/12/6 юЄЄхэъют (ёфхырхь 36, эю ъръ юъЁєуы Є№ ш фю 18, ш фю 12?), 7  ЁъюёЄхщ (тъы■ўр  0,W)
saturation2 (эр ATM 18 hue): 36 hue * 5 volume (Ёхры№эю тшфэю 5)
saturation1 (эр ATM 6 hue): 12 hue * 5 volume (Ёхры№эю тшфэю 1)
saturation0 (эр ATM 1 hue): 1 hue * 5 volume (Ёхры№эю тшфэю 2)
0
W
=247 ЎтхЄют
яЁюсыхьр ё юъЁєуыхэшхь hue яЁш юЄюсЁрцхэшш т ATM схч фшЇхЁшэур
 ўЄюс√ шьхЄ№ Єюўъш Єюўэ√ї ЎтхЄют ш яЁш ¤Єюь єьхЄ№ юъЁєуы Є№ юфэш ш Єх цх hue фю 18 ш фю 12, эрфю шьхЄ№ эхў╕Єэ√х уЁєяя√, эю юэш эх ьюуєЄ шьхЄ№ ёююЄэю°хэшх 2:3! Ёхры№эхх 3:4.5:
їЁрэшь 54 hue
ъръ юъЁєуы Є№ фю 18 hue:
0!,1),(2,3!,4),(5,6!,7),(8,9!,10),...
ъръ юъЁєуы Є№ фю 12 hue:
0!,1,2),(3,4(,)5,6),(7,8,9!,10,11),...
 ўЄюс√ юъЁєуы Є№ юфэш ш Єх цх hue фю 12 ш фю 6, эрфю ёююЄэю°хэшх 1:2, Ёхры№эхх 3:6
їЁрэшь 36 hue
ъръ юъЁєуы Є№ фю 12 hue:
0!,1),(2,3!,4),(5,6!,7),(8,9!,10),...
ъръ юъЁєуы Є№ фю 6 hue:
0!,1,2),(3,4,5,6!,7,8),(9,10,11,...

їЁрэшь 18 hue
ъръ юъЁєуы Є№ фю 12 hue:
0!),(1,2),(3!),(4,5),(6!),(7,8),(9!),(10,...

у) ЁрчсшЄ№ яю эрё√∙хээюёЄ ь ш  ЁъюёЄ ь (сюы№°шх ш ьры√х  ЁъюёЄш шьх■Є ьхэ№°х hue), volume 0 ш 6 юЄфхы№эю
эрё√∙хээюёЄхщ юёюсю ьэюую эх эрфю? фюсртшЄ№ Єюы№ъю х∙╕ юфэє ьрыюэрё√∙хээє■? эю ъръ х╕ юЄюсЁрцрЄ№ схч фшЇхЁшэур? ъръ эєыхтє■ (яхЁхїюф т ёхЁ√щ юс√ўэю эх ёЄЁр°хэ) шыш ъръ ёюёхфэ■■? шыш ыєў°х 2 ьрыюэрё√∙хээ√ї
/*
saturation4, volume5 (эр ATM 6 hue): 36 hue
saturation4, volume4 (эр ATM 12 hue): 54 hue
saturation4, volume3 (эр ATM 18 hue): 54 hue
saturation4, volume2 (эр ATM 12 hue): 54 hue
saturation4, volume1 (эр ATM 6 hue): 36 hue
^^^^^^^^^ ¤Єю єцх 234!
saturation3, volume5 (эр ATM 6 hue): 6 hue
saturation3, volume4 (эр ATM 6 hue): 6 hue
saturation3, volume3 (эр ATM 6 hue): 6 hue
saturation3, volume2 (эр ATM 6 hue): 6 hue
saturation3, volume1 (эр ATM 6 hue): 6 hue

saturation2, volume5 (эр ATM ? hue): 6 hue
saturation2, volume4 (эр ATM ? hue): 6 hue
saturation2, volume3 (эр ATM ? hue): 6 hue
saturation2, volume2 (эр ATM ? hue): 6 hue
saturation2, volume1 (эр ATM ? hue): 6 hue

saturation1, volume5 (эр ATM ? hue): 6 hue
saturation1, volume4!(эр ATM ? hue): 6 hue
saturation1, volume3 (эр ATM ? hue): 6 hue
saturation1, volume2!(эр ATM ? hue): 6 hue
saturation1, volume1 (эр ATM ? hue): 6 hue
^^^^^^^^^^ ¤Єю х∙╕ 108!
saturation0, volume5 (эр ATM 1 hue): 1 hue
saturation0, volume4!(эр ATM 1 hue): 1 hue
saturation0, volume3 (эр ATM 1 hue): 1 hue
saturation0, volume2!(эр ATM 1 hue): 1 hue
saturation0, volume1 (эр ATM 1 hue): 1 hue
*/

/*
saturation2, volume5 (эр ATM 6 hue): 6 hue?
saturation2, volume4 (эр ATM 12 hue): 18 hue
saturation2, volume3 (эр ATM 18 hue): 54 hue
saturation2, volume2 (эр ATM 12 hue): 18 hue
saturation2, volume1 (эр ATM 6 hue): 18 hue
^^^^^^^^^^^^ ¤Єю єцх 114
saturation2-, volume5 (эр ATM 6 hue): 6 hue
saturation2-, volume4 (эр ATM 12 hue): 18 hue
saturation2-, volume3 (эр ATM 18 hue): 18 hue
saturation2-, volume2 (эр ATM 12 hue): 18 hue
saturation2-, volume1 (эр ATM 6 hue): 6 hue
^^^^^^^^^^ ¤Єю х∙╕ 66
saturation1, volume5 (эр ATM 1 hue): 6 hue?
saturation1, volume4 (эр ATM 1 hue): 6 hue
saturation1, volume3 (эр ATM 1 hue): 6 hue
saturation1, volume2 (эр ATM 6 hue): 18 hue
saturation1, volume1 (эр ATM 1 hue): 6 hue
^^^^^^^^^^ ¤Єю х∙╕ 42 (шЄюую єцх 222)
saturation0+, volume5 (эр ATM 1 hue): 1 hue?
saturation0+, volume4!(эр ATM 1 hue): 6 hue
saturation0+, volume3 (эр ATM 1 hue): 6 hue
saturation0+, volume2!(эр ATM 1 hue): 6 hue
saturation0+, volume1 (эр ATM 1 hue): 6 hue

saturation0, volume4+(эр ATM 1 hue): 1 hue
saturation0, volume4!(эр ATM 1 hue): 1 hue
saturation0, volume4-(эр ATM 1 hue): 1 hue
saturation0, volume2+(эр ATM 1 hue): 1 hue
saturation0, volume2!(эр ATM 1 hue): 1 hue
saturation0, volume2-(эр ATM 1 hue): 1 hue
0
W
=255 ЎтхЄют, эю ЎтхЄют сюы№°х тёхую эрфю эх яЁш ьръёшьры№эющ эрё√∙хээюёЄш, р яЁш яЁюьхцєЄюўэющ
*/

ЎтхЄют сюы№°х тёхую эрфю эх яЁш ьръёшьры№эющ эрё√∙хээюёЄш, р яЁш яЁюьхцєЄюўэющ (эю юЄюсЁрцрхь х╕ ъръ ьръёшьры№эє■, Є.ъ. т saturation1 Єюы№ъю 6 hue)
чюэр saturation1 фюыцэр с√Є№ °шЁюър , ўЄюс√ т эх╕ яюярфрыю яюсюы№°х яшъёхыхщ (Є.х. ъръ с√ яЁшёєЄёЄтєхЄ saturation 1-, р Єю ш 1+ Єющ цх °шЁшэ√?)
saturation2, volume5 (эр ATM 6 hue): 6 hue
saturation2, volume4 (эр ATM 12 hue): 12 hue
saturation2, volume3 (эр ATM 18 hue): 18 hue
saturation2, volume2 (эр ATM 12 hue): 12 hue
saturation2, volume1 (эр ATM 6 hue): 6 hue
^^^^^^^^^^^^ ¤Єю єцх 54
saturation2-, volume5 (эр ATM 6 hue): 6 hue
saturation2-, volume4 (эр ATM 12 hue): 12 hue
saturation2-, volume3 (эр ATM 18 hue): 54 hue (*3)
saturation2-, volume2 (эр ATM 12 hue): 18 hue
saturation2-, volume1 (эр ATM 6 hue): 6 hue
^^^^^^^^^^ ¤Єю х∙╕ 96
saturation1, volume5 (эр ATM 1 hue): 6 hue
saturation1, volume4 (эр ATM 1 hue): 6 hue
saturation1, volume3 (эр ATM 1 hue): 18 hue
saturation1, volume2 (эр ATM 6 hue): 30 hue? (*5)
saturation1, volume1 (эр ATM 1 hue): 6 hue
^^^^^^^^^^ ¤Єю х∙╕ 66
saturation0+, volume4+(эр ATM 1 hue): 1 hue
saturation0+, volume4!(эр ATM 1 hue): 6 hue
saturation0+, volume4-(эр ATM 1 hue): 6 hue
saturation0+, volume2+(эр ATM 1 hue): 6 hue
saturation0+, volume2!(эр ATM 1 hue): 6 hue
saturation0+, volume2-(эр ATM 1 hue): 6 hue

saturation0, volume4+(эр ATM 1 hue): 1 hue
saturation0, volume4!(эр ATM 1 hue): 1 hue
saturation0, volume4-(эр ATM 1 hue): 1 hue
saturation0, volume2+(эр ATM 1 hue): 1 hue
saturation0, volume2!(эр ATM 1 hue): 1 hue
saturation0, volume2-(эр ATM 1 hue): 1 hue
0 (volume0)
W (volume6)
=255 ЎтхЄют

╠юцэю єЄюўэ Є№ Єюы№ъю тюъЁєу Ёхры№эю шёяюы№чєхь√ї 16 ЎтхЄют, р юёЄры№э√х ЎтхЄр - яЁюёЄю RRGGBB
эю єЄюўэхэшх - ¤Єю 26 фюяюыэшЄхы№э√ї ЎтхЄют (ъєс 3x3x3)! (ъЁюьх Єхї, ъюЄюЁ√х эр яютхЁїэюёЄш, р эр яютхЁїэюёЄш 56 шч 64 ЎтхЄют, 14 шч 16)
 фы  ёЄрэфрЁЄэющ ярышЄЁ√:
т єуыє 8 ЎтхЄют - шї єЄюўэ ■Є яю 4 ЎтхЄр (шЄюую 32)
эр ЁхсЁх 6 ЎтхЄют - шї єЄюўэ ■Є яю 12 ЎтхЄют (шЄюую 96)
эр яютхЁїэюёЄш уЁрэш 0 ЎтхЄют
тэєЄЁш 2 ЎтхЄр - шї єЄюўэ ■Є яю 26 ЎтхЄют (шЄюую 52)
64+32+96+52 = 244
 фы  ёЄрэфрЁЄэющ ярышЄЁ√ ёю ёь уў╕ээ√ьш ўшёЄ√ьш ЎтхЄрьш (+3,2,2 тьхёЄю M):
т єуыє 2 ЎтхЄр - шї єЄюўэ ■Є яю 4 ЎтхЄр (шЄюую 8)
эр ЁхсЁх 6 ЎтхЄют - шї єЄюўэ ■Є яю 12 ЎтхЄют (шЄюую 96)
эр яютхЁїэюёЄш уЁрэш 1 ЎтхЄ - хую єЄюўэ ■Є 17 ЎтхЄют (шЄюую 17)
тэєЄЁш 7 ЎтхЄют - шї єЄюўэ ■Є яю 26 ЎтхЄют (шЄюую 182)
8+96+18+182 = 303 эхтючьюцэю! эрфю яхЁхэхёЄш 5 тэєЄЁхээшї ЎтхЄют эр уЁрэш

softb16.act:
0,0,0 0
1,1,2 b
2,1,1 r
3,2,2 R Єхыхёэ√щ
1,2,0 g ЄЁрт эющ
2,2,3 B? (2,3,1 G softc16.act) (3,2,1 O softd16.act фы  Ёєср°хъ эр ърЁЄшэх)
2,2,1 y
3,3,3 W
ёхЁ√х:
2,2,2 S
1,1,1 s
ъюЁЁхъЎш  Єхэхщ:
0,0,1 b0
0,1,0 g0
1,0,0 r0
ъюЁЁхъЎш  чрётхЄюъ:
3,3,2 YW
3,2,3 MW (3,3,1 Y softe16.act фы  ырья√ є фцхфр )
2,3,3 CW

т єуыє 2 ЎтхЄр (0,W) - шї єЄюўэ ■Є яю 4 ЎтхЄр (шЄюую 8)
эр ЁхсЁх 6 ЎтхЄют (b0,r0,g0,YW,CW,Y) - шї єЄюўэ ■Є яю 12 ЎтхЄют (шЄюую 96)
эр яютхЁїэюёЄш уЁрэш 3 ЎтхЄр (R,g,O) - шї єЄюўэ ■Є яю 17 ЎтхЄют (шЄюую 51)
тэєЄЁш 5 ЎтхЄют (s,S,b,r,y) - шї єЄюўэ ■Є яю 26 ЎтхЄют (шЄюую 130)
8+96+51+130 = 285 эхтючьюцэю! ьюцэю єсЁрЄ№ єЄюўэхэшх фы  g? (Є.ъ. юэ юЄюЁтрэ) сєфхЄ 259
ьюцэю тьхёЄю ¤Єюую єсЁрЄ№ єЄюўэхэш  ё яютхЁїэюёЄш ЇшуєЁ√, Є.ъ. шї эхтючьюцэю эшъръ юЄЁшёютрЄ№
шыш юёЄртшЄ№ Єюы№ъю Єюўъш тэєЄЁш ЇшуєЁ√ (or 64 ёЄрэфрЁЄэ√ї ЎтхЄр), яюыєўрхЄё  263
ъръшх 7 єЄюўэ ■∙шї ЎтхЄют єсЁрЄ№? юъЁхёЄэюёЄ№ Y (3) ш юъЁхёЄэюёЄ№ яёхтфюЄюўъш r0+g

x=g(0..9), y=b(9..0)
R=9:
1001001001 ;W
0000000011
0000000111
1001001111 ;YW
0000001111
0000001100
1001001101 ;Y (юъЁхёЄэюёЄ№ єсЁрэр)
0000000000
0000000000
1001001001

R=8:
0000000001
0000000011
0000000111
0000001111
0000011111
0000011110
0000011110
0000000000
0000000000
0000000000

R=7:
0000000001
0000000111
0000001111
0000011110
0000011110
0000111100
0000111100
0000000000
0000000000
0000000000

R=6:
1001001001 ;CW
0000000110
0000001110
1001011101
0000011100
0000111000
1001111001
0000000000
0000000000
1001001001

R=5:
0000000000
0000001100
0000011100
0000111110
0000111100
0001111100
0001111000
0011111000
0000000000
0000000000

R=4:
0000000000
0000000000
0000010000
0000110000
0001111000
0001111000
0011111100
0011111000
0111111000
0000000000

R=3:
1001001001
0000000000
0000000000
1001001001
0001000000
0011100000
1011101001
0111110000
0110110000
1101011001 ;юъЁхёЄэюёЄ№ r0+g єсЁрэр

R=2:
0000000000
0000000000
0000000000
0000000000
0010000000
0011000000
0111000000
0111100000
1111100000
1110110000 ;юъЁхёЄэюёЄ№ r0+g єсЁрэр

R=1:
0000000000
0000000000
0000000000
0000000000
0000000000
0100000000
0110000000
1111000000
1111000000
1111100000

R=0:
1001001001
0000000000
0000000000
1001001001
0000000000
0000000000
1001001001
1100000000
1110000000
1111001001
эхфюёЄрЄюўэю Єхыхёэ√ї ЎтхЄют

═єцэр ЄрсышЎр R5G5B5 -> index256 (чрщь╕Є 32K), ьюцэю R5G5B4? (16K)

фы  diamond т√уюфэю єЄюўэ Є№ эх т 3 Ёрчр, р т 4

Єхыхёэ√щ ЎтхЄюяхЁхїюф
эр яюЁЄЁхЄх эхчэръюьъш: 001 101 111 211 212 312 322 422 423 533 (534∙хър) 633 644 744 754(яыюїю) 854 864(яыюїю) 865 875(яыюїю) 975 976 986(яыюїю)
 эх їтрЄрхЄ (7.5 4.5 4) (8 5.5 4.5) (8.5 6.5 5) (9 7.5 6.5??? Photoshop эх эрїюфшЄ)
эр фцхфрх: ... 432 532 542(яыюїю) 643 743 753 853 (863(яыюїю)) 960(єцрёэю, эрфю 963, эю эр ърЁЄшэъх Ёхры№эю ё  ЁъюёЄ№■ єьхэ№°рхЄё  чэрўхэшх B - шыш Єръ ёютярыш я Єэр °єьр)
 эх їтрЄрхЄ (5.5 3.5 2.5) (8.5 5.5 3)


фшЇхЁшэу шч шэфхъёэ√ї ЎтхЄют т ¤ъЁрээ√х (сєЇхЁ ърЁЄшэъш EGA):
уфх їЁрэшЄ№ ю°шсъє фы  ёыхфє■∙хщ ёЄЁюъш? сєЇхЁ эр °шЁшэє ёЄЁюъш ърЁЄшэъш?
фшЇхЁшэу Єюы№ъю яю уюЁшчюэЄрыш?
init. r,g,b = 0
0.r,g,b += pal256[pixline[x]]
1.эрщЄш ЎтхЄ c16 ёрь√щ сышчъшщ ъ r,g,b
2.scrline[x]=c16
3.r,g,b -= rgb[c16] //чэръют√щ Ёхчєы№ЄрЄ
4.x++

;hl=pixline
;??=scrline
;?=pixline low
;???=pixline step
;bc=rgb (юэ цх рфЁхё ЄрсышЎ√ c16[rgb]) = %11RRRRRGGGGGBBBB, уфх RRRRR,GGGGG = 3..12 т эюЁьх (ьръё. ю°шсър = +-3??? ъ Єюьє цх, 10 чэрўхэшщ эхфюёЄрЄюўэю фы  Єхыхёэ√ї) (яю єьє ю°шсър эх фюыцэр яЁхт√°рЄ№ +-6 яю ърцфющ юёш, фшрярчюэ чэрўхэшщ эрфю -6..+15, ЄрсышЎр 21x21x21 схч Єхыхёэ√ї=9261, ё Єхыхёэ√ьш ьюцэю єЄюўэшЄ№ Єюы№ъю юфэє юё№ шыш фтх ё чрїюфюь т эшцэ■■ ярь Є№) (Ёхры№эю ьюцхЄ с√Є№ т√ыхЄ чр єуы√ схч ярышЄЁют√ї ЎтхЄют? Єюуфр ю°шсър сюы№°х?)
;de=pal256
;юъэр: 1=scrline, 2=pixline, 3=c16[rgb]
;шыш ыєў°х яЁюьхцєЄюўэ√щ сєЇхЁ фы  ьрё°ЄрсшЁютрэш  ёЄЁюъш ш їЁрэхэш  ю°шсюъ? юъэр: 1=scrline, 2,3=c16[rgb]
/*
 рсёюы■Єэ√щ ьшэшьєь:
ld e,(hl)
inc hl ;TODO їюфшЄ№ ё ьрё°Єрсюь
ld d,pal256/256
ld a,(de)
add a,c
ld c,a ;
inc d
ld a,(de)
adc a,b
ld b,a ;bc=rgb
inc d
ld a,(bc) ;c16
ld (..),a ;scrline[x]=c16 ;TODO ёЁрчє ъырёЄ№ 2 яшъёхы 
ld e,a ;mrgb[c16]
ld a,(de)
add a,c
ld c,a ;
inc d
ld a,(de)
adc a,b
ld b,a ;bc=drgb ;чэръют√щ!
*/
 ьрё°ЄрсшЁютрэшх ш т√ўшёыхэшх rgb (ёухэхЁшЁютрээ√щ ъюф, ЁшёєхЄ ёяЁртр эрыхтю):
add/adc hl,bc ;bc<0, CY=1
ld e,(hl) ;de=pal256+0/+256
ld a,(de)
ld (..l/h),a
inc/dec d
ld a,(de)
ld (..h/l),a
:64t/pix (ърцф√щ тЄюЁющ яЁюїюф ьюцэю 62t ўхЁхч push af)
 
 фшЇхЁшэу:
/*
pop de
add hl,de ;hl=rgb
 set 7,h ;TODO ъръ шчсхцрЄ№ яхЁхяюыэхэш  яю R?
ld a,(hl) ;c16
ld (..),a ;scrline[x]=c16 ;TODO ёЁрчє ъырёЄ№ 2 яшъёхы 
 ;ld (),a ;c16 ў╕Єэюх
 ;ld de,()
 ;add hl,de ;13+20+11=34
ld d,mrgbc16/256
ld e,a ;de=mrgb[c16]
ld a,(de)
add a,l
ld l,a
inc d
ld a,(de)
adc a,h
ld h,a ;bc=drgb ;чэръют√щ! ;7+4+7+4+4+4+7+4+4=45
*/
pop de
add hl,de ;hl=rgb
ld a,(hl) ;c16 (left)
 ld (),a ;c16 ў╕Єэюх
 ld de,() ;de=mrgb[c16]
 add hl,de
pop de
add hl,de ;hl=rgb
ld e,a ;c16 (left)
ld a,(hl) ;c16 (right)
 ld (),a ;c16 ў╕Єэюх
ld d,a ;d=right,e=left ;de = %001rrrr0 001LLLL0
ld a,(de) ;%rlrrrlll
 ld de,() ;de=mrgb[c16]
 add hl,de
ld (bc),a ;scrline[x]=%rlrrrlll ;ёЁрчє ъырф╕ь 2 яшъёхы 
inc bc
:172t/2pix = 86t/pix

т√тюф ърЁЄшэъш эр ¤ъЁрэ (EGA):
эрфю сЁрЄ№ срщЄ√ ўхЁхч 4 (шыш ўхЁхч 2 ЁрёяшїштрЄ№ т 2 сыюър ярь Єш)
т√тюфшь яю яЁюшчтюы№эюьє рфЁхёє ш ьюцхь эх эр тё■ °шЁшэє ърЁЄшэъш!
/*
╨рёяшїштрхь ўхЁхч юфшэ срщЄ т 2 сыюър ярь Єш (di!):
pop af
ld (hl),a
inc hl
pop af
ld (de),a
inc de
;яЁюсыхьр ё яЁхЁ√трэшхь! тЄюЁющ Ёрч эх яЁюўшЄрхь!!! ўшЄрЄ№ шч ёЄхър ьюцэю Єюы№ъю ўхЁхч de
*/
/*
╨рёяшїштрхь ўхЁхч юфшэ срщЄ т 2 сыюър ярь Єш (ei):
pop de
ld (hl),e
inc hl
pop de
ld a,e
ld (bc),a
inc bc
:50t/2byte = 25t/byte = 12.5t/pix
*/
╨рёяшїштрхь т 4 сыюър ярь Єш (di! Є.ъ. яюёых exx єцх эхръЄєры№эюх de):
pop de
ld (hl),e
inc hl
ld a,d
exx
ld (bc),a
inc bc
pop de
ld (hl),e
inc hl
ld a,d
exx
ld (bc),a
inc bc
:88t/4byte = 22t/byte = 11t/pix
ьюцэю шьхЄ№ 32 ъюяшш яЁюЎхфєЁ√ (ё Ёрчэ√ьш эрўры№э√ьш x), Єюуфр сюы№°шэёЄтю inc rp ьюцэю чрьхэшЄ№ эр inc r

т√тюф ърЁЄшэъш т ьєы№ЄшъюыюЁ, ёэрўрыр фтр ёыю  яшъёхыхщ (р яюЄюь Єръ цх - рЄЁшсєЄ√):
pop de
ld (hl),e
set 5,h
ld (hl),d
inc hl
pop de
ld (hl),d
res 5,h
ld (hl),e
inc hl
:38t/2byte = 19t/byte
;3b/b, Є.х. тё  ёЄЁюър яшъёхыхщ (юэр цх ёЄЁюър рЄЁшсєЄют) = 3*80 = 240 b
т ъюэЎх т эєцэюь ьхёЄх яюёЄртшЄ№ jp (ix) ёЁрчє яюёых ld (hl) - ¤Єю эєцэю Єюы№ъю юфшэ Ёрч эр тё■ ърЁЄшэъє
+тїюф ё Ёрчэ√ї ьхёЄ - фы  Ёрчэюую эрўры№эюую яюыюцхэш  ърЁЄшэъш эр ¤ъЁрэх


/*
яю тхЁЄшърыш (хёыш ърЁЄшэър Ёрчыюцхэр яю тхЁЄшърыш):
pop de
ld (hl),e
add hl,bc
ld (hl),d
add hl,bc
:46t/2byte = 23t/byte = 11.5t/pix
*/

╩ръ фхырЄ№ фшЇхЁшэу т їрщЁхч?
═єцэю эрщЄш 2 эрсюЁр яю 2 ЎтхЄр (фы  ў╕Єэ√ї ш эхў╕Єэ√ї ёЄЁюъ) ш ъюэтхЁЄшЄ№ т ¤Єш ярышЄЁ√ ё ЁрёяЁюёЄЁрэхэшхь ю°шсъш тяЁртю ш тэшч!
сюы№°шэёЄтю чэръюьхёЄ шьх■Є ў╕Ёэ√щ шыш схы√щ Їюэ? (фюёЄрЄюўэю эрщЄш юфшэ ў╕Ёэ√щ яшъёхы№ фы  paper=0 шыш юфшэ схы√щ яшъёхы№ фы  ink=1) (р ъръ эрщЄш тЄюЁющ ЎтхЄ? фюыцэю юЄышўрЄ№ё  фы  ў╕Єэ√ї ш эхў╕Єэ√ї ёЄЁюъ)
шч юёЄры№э√ї сюы№°шэёЄтю ЎтхЄюяхЁхїюф√? ъръ эрщЄш фы  эшї 2 ЎтхЄр? фюыцэю юЄышўрЄ№ё  фы  ў╕Єэ√ї ш эхў╕Єэ√ї ёЄЁюъ?
яю шфхх эрфю эрщЄш 2 ёрь√ї фры№эшї фЁєу юЄ фЁєур ЎтхЄр?
хёыш яЁюёЄю шёърЄ№ minR,maxR ш Є.я. яю ърцфющ ёюёЄрты ■∙хщ, Єю эхяюэ Єэю, ъръє■ фшруюэры№ сЁрЄ№
эрфю яю¤Єюьє яю ърцфющ юёш шёърЄ№ ьшэшьєь, ьръёшьєь ш ёююЄтхЄёЄтє■∙шх шь ЎтхЄр
яюЄюь тч Є№ юё№ ё ёрь√ь сюы№°шь ЁрёёЄю эшхь ш ЎтхЄр шч эх╕
фы  ¤Єюую эрфю Єюы№ъю єьхЄ№ с√ёЄЁю ёўшЄрЄ№ R,G,B юЄ яшъёхы 

ю°шсър яЁш ¤Єюь ьюцхЄ с√Є№ юўхэ№ сюы№°р ! ьюцхЄ ыш эръряыштрЄ№ё  яЁш яЁюфтшцхэшш (Єюуфр эєцэю єёхўхэшх)? ю°шсър фюыцэр Ёрчь√трЄ№ё  яю тёхьє эшцхёыхфє■∙хьє чэръюьхёЄє шыш эх тыш Є№ эр эхую (Єюуфр эрфю фЁєує■ ыюушъє фы  яюшёър ярышЄЁ√ эхў╕Єэ√ї ёЄЁюъ)?

╩ръ ъюэтхЁЄшЄ№ rgb т 2 чрфрээ√ї ЎтхЄр? ярышЄЁ ьюцхЄ с√Є№ юўхэ№ ьэюую, ёЄЁрэшўхъ эх їтрЄшЄ яюф ЄрсышЎ√ bit[curpal,rgb]!!!
Єюуфр эрфю шёърЄ№ ЁрёёЄю эшх юЄ rgb фю чрфрээюую ЎтхЄр, эрфю 16 ёЄЁрэшўхъ яюф ЄрсышЎ√ dist[color16,rgb]!!!
яхЁхъы■ўхэшх ёЄЁрэшўхъ - ¤Єю фюыую, ьюцэю яюяЁюсютрЄ№ sum(distr,distg,distb), уфх distX = abs[r[rgb]-colorr], эю ЄЁш ЄрсышЎ√ юЄ rgb - цшЁэю, яЁшф╕Єё  тЁєўэє■ т√фхы Є№ сшЄ√ шч rgb!
¤Єю чэрўшЄ, ўЄю фшрярчюэ ЎтхЄютющ ёюёЄрты ■∙хщ фюыцхэ с√Є№ 0..15 (эхюсїюфшью Ёєўэюх єёхўхэшх) шыш 0..31
шыш юЄърчрЄ№ё  юЄ Їыющфр-ёЄхщэсхЁур, яЁшфєьрЄ№ с√ёЄЁ√щ рыуюЁшЄь фы  diamond? bit = f(curpal,rgb,xyphase)

фы  чэръюьхёЄ ё ў╕Ёэ√ь шыш схы√ь Їюэюь ьюцэю яхЁхф ъюэтхЁёшхщ эюЁьшЁютрЄ№ ЎтхЄр т єЁютэш 0(ў╕Ёэ√щ шыш ЎтхЄ)..1(схы√щ шыш ЎтхЄ)
фы  чэръюьхёЄ ё фтєь  ЎтхЄрьш ьюцэю яхЁхф ъюэтхЁёшхщ эюЁьшЁютрЄ№ ЎтхЄр т єЁютэш 0(ЎтхЄ1)..1(ЎтхЄ2)
Єюуфр фшЇхЁшэу ЄЁштшрыхэ, їюЄ№ Їыющф, їюЄ№ diamond
ъръ эюЁьшЁютрЄ№? 2 ЎтхЄр эхы№ч  эюЁьшЁютрЄ№ яю  ЁъюёЄш
р яЁюхъЎш  эр ышэш■ - цшЁэю
т√сЁрЄ№ юфэє ЎтхЄютє■ ёюёЄрты ■∙є■ (уфх ёрьр  сюы№°р  ЁрчэшЎр) ш яю эхщ эюЁьшЁютрЄ№? (Єє цх, яю ъюЄюЁющ шёърыш 2 ёрь√ї фры╕ъшї ЎтхЄр)
яєёЄ№ ¤Єю юърчрырё№ R:
R = R(pixel) ;юъЁєуыхэю Єръ цх, ъръ Rmin,Rmax!
inklevel = (R-Rmin)/maxdist
bit = (inklevel > chunklevel[x%4][y%4])
фхыхэшх .5/.5 (юЄЁшЎрЄхы№э√х яЁштюфшь ъ 0? шыш эх сєфхЄ тэх 0..1, Є.ъ. схЁ╕ь Rmin ш Rmax)

═рфю яхЁхф ъюэтхЁёшхщ ёЄЁюъш (шыш ёЄЁюъш чэръюьхёЄр) ъюяшЁютрЄ№ х╕ (т эєцэюь ьрё°Єрсх) т эшцэ■■ ярь Є№ т тшфх R(+0),G(+8),B(+16), шэрўх яЁюсыхь√ ё юъэрьш ярь Єш ш ыш°эшьш ъюэтхЁёш ьш?
▌Єю ьюцэю ёфхырЄ№ т 3 яЁюїюфр (ё Ёрчэ√ьш ЄрсышЎрьш R(rgb)) шыш ыєў°х фхырЄ№ ЄрсышЎ√ R(index256)


        macro DITHERMC ch0,ch1,ch2,ch3
;яюшёъ 2 ЎтхЄют (чряюьшэрхь яюыюцхэш  ЁхъюЁфэ√ї ЎтхЄют, ўЄюс√ яюЄюь шї яЁюўшЄрЄ№):
        ld hl,chrbuf
_=(chrbuf+8)&0xff
        ld de,_*257
        ld c,(hl) ;Rmin
        ld b,c ;Rmax
_=_+1
        dup 7
        inc l
        ld a,(hl) ;R(pixel)
        cp c ;Rmin
        jr nc,$+2+1+2
         ld c,a ;Rmin
         ld e,_ ;Rmincolor = яюыюцхэшх Єхъє∙хую ЎтхЄр
        cp b ;Rmax
        jr c,$+2+1+2
         ld b,a ;Rmax
         ld d,_ ;Rmaxcolor = яюыюцхэшх Єхъє∙хую ЎтхЄр
_=_+1
        edup
        push de ;ld (Rminmaxcolor),de
        ld a,b
        sub c
        push af

        inc l ;ld hl,chrbuf+8
_=(chrbuf+8)&0xff
        ld de,_*257
        ld c,(hl) ;Gmin
        ld b,c ;Gmax
_=_+1
        dup 7
        inc l
        ld a,(hl) ;G(pixel)
        cp c ;Gmin
        jr nc,$+2+1+2
         ld c,a ;Gmin
         ld e,_ ;Gmincolor = яюыюцхэшх Єхъє∙хую ЎтхЄр
        cp b ;Gmax
        jr c,$+2+1+2
         ld b,a ;Gmax
         ld d,_ ;Gmaxcolor = яюыюцхэшх Єхъє∙хую ЎтхЄр
_=_+1
        edup
        push de ;ld (Gminmaxcolor),de
        ld a,b
        sub c
        push af

        inc l ;ld hl,chrbuf+16
_=(chrbuf+8)&0xff
        ld de,_*257
        ld c,(hl) ;Bmin
        ld b,c ;Bmax
_=_+1
        dup 7
        inc l
        ld a,(hl) ;B(pixel)
        cp c ;Bmin
        jr nc,$+2+1+2
         ld c,a ;Bmin
         ld e,_ ;Bmincolor = яюыюцхэшх Єхъє∙хую ЎтхЄр
        cp b ;Bmax
        jr c,$+2+1+2
         ld b,a ;Bmax
         ld d,_ ;Bmaxcolor = яюыюцхэшх Єхъє∙хую ЎтхЄр
_=_+1
        edup
        ;ld (Bminmaxcolor),de
        ld a,b
        sub c

;т√сшЁрхь ыєў°є■ юё№ ш х╕ minmaxcolor:
        ld c,a ;maxdist
        pop af ;Gmax-Gmin
        pop hl ;Gminmaxcolor
        cp c ;>=maxdist?
        jr c,$+2+1+1
         ld c,a ;maxdist
         ex de,hl
        pop af ;Rmax-Rmin
        pop hl ;Rminmaxcolor
        cp c ;>=maxdist?
        jr c,$+2+1
         ex de,hl

;d=maxcolor
;e=mincolor
;схЁ╕ь ЁхъюЁфэ√х ЎтхЄр (т тшфх color16):
;ўЄюс√ яюыєўшЄ№ color16, эрфю ёэрўрыр color64(=BBGGRR), яюЄюь яю ЄрсышЎх шч эхую
        ld h,chrbuf/256
        ld l,d ;maxcolor
;юъЁєуы Є№ ттхЁї! +32 (эрщфхэю яюфсюЁюь)
        ld a,(hl) ;G
         add a,32
         jr nc,$+3
         sbc a,a
        ld c,a
        res 3,l
        ld a,(hl) ;R
         add a,32
         jr nc,$+3
         sbc a,a
        ld b,a
        set 4,l
        ld a,(hl) ;B
         add a,32
         jr nc,$+3
         sbc a,a
        rlca
        rlca
        rl c
        rla
        rl c ;g
        rla
        rl b
        rla
        rl b ;r
        rla ;BBGGRR
        and 0x3f
        ld l,a
        ;ld h,t64to16ink/256
        ld d,(hl) ;d=maxcolor16=ink
        ld l,e ;mincolor
        ;ld h,chrbuf/256
;юъЁєуы Є№ тэшч! -32 (эрщфхэю яюфсюЁюь)
        ld a,(hl) ;G
         sub 64
         jr nc,$+3
         xor a
        ld c,a
        res 3,l
        ld a,(hl) ;R
         sub 64
         jr nc,$+3
         xor a
        ld b,a
        set 4,l
        ld a,(hl) ;B
         sub 64
         jr nc,$+3
         xor a
        rlca
        rlca
        rl c
        rla
        rl c ;g
        rla
        rl b
        rla
        rl b ;r
        rla ;BBGGRR
        or 0xc0
        ld l,a
        ;ld h,t64to16paper/256
        ld a,(hl) ;a=mincolor16=paper
        or d
;a=attr
        exx
        ld (hl),a ;чряшёрЄ№ attr
        inc hl
        exx

;яю Ёхры№э√ь рЄЁшсєЄрь чрэютю яхЁхёўшЄрЄ№ maxaxis, min, maxdist! (яЁютхЁхэю, ўЄю схч ¤Єюую яюыєўрхЄё  я ЄэшёЄюёЄ№):
        ld l,a
        ld h,tmaxaxis/256
        ld d,(hl) ;maxdistdiv
        inc h
        ld b,(hl) ;min
        inc h
        ld l,(hl) ;maxaxis*3
        ld h,chrbuf/256

;b=R/G/Bmin
;hl эр эрўрых сєЇхЁр R/G/B
;d=maxdistdiv
;т фшЇхЁшэух їюфшь Єюы№ъю яю юфэющ ёюёЄрты ■∙хщ, юёЄры№э√х эх ўшЄрхь:
        ld a,(hl) ;R(pixel)
        inc l
        sub b ;Rmin
         rra ;эр ёыєўрщ юЄЁшЎрЄхы№э√ї
        ld e,a ;d=maxdistdiv
        ld a,(de) ;inklevel
        cp ch0 ;chunklevel[x%4][y%4]
        rl c ;bits
        ld a,(hl) ;R(pixel)
        inc l
        sub b ;Rmin
         rra ;эр ёыєўрщ юЄЁшЎрЄхы№э√ї
        ld e,a ;d=maxdistdiv
        ld a,(de) ;inklevel
        cp ch1 ;chunklevel[x%4][y%4]
        rl c ;bits
        ld a,(hl) ;R(pixel)
        inc l
        sub b ;Rmin
         rra ;эр ёыєўрщ юЄЁшЎрЄхы№э√ї
        ld e,a ;d=maxdistdiv
        ld a,(de) ;inklevel
        cp ch2 ;chunklevel[x%4][y%4]
        rl c ;bits
        ld a,(hl) ;R(pixel)
        inc l
        sub b ;Rmin
         rra ;эр ёыєўрщ юЄЁшЎрЄхы№э√ї
        ld e,a ;d=maxdistdiv
        ld a,(de) ;inklevel
        cp ch3 ;chunklevel[x%4][y%4]
        rl c ;bits

        ld a,(hl) ;R(pixel)
        inc l
        sub b ;Rmin
         rra ;эр ёыєўрщ юЄЁшЎрЄхы№э√ї
        ld e,a ;d=maxdistdiv
        ld a,(de) ;inklevel
        cp ch0 ;chunklevel[x%4][y%4]
        rl c ;bits
        ld a,(hl) ;R(pixel)
        inc l
        sub b ;Rmin
         rra ;эр ёыєўрщ юЄЁшЎрЄхы№э√ї
        ld e,a ;d=maxdistdiv
        ld a,(de) ;inklevel
        cp ch1 ;chunklevel[x%4][y%4]
        rl c ;bits
        ld a,(hl) ;R(pixel)
        inc l
        sub b ;Rmin
         rra ;эр ёыєўрщ юЄЁшЎрЄхы№э√ї
        ld e,a ;d=maxdistdiv
        ld a,(de) ;inklevel
        cp ch2 ;chunklevel[x%4][y%4]
        rl c ;bits
        ld a,(hl) ;R(pixel)
        inc l
        sub b ;Rmin
         rra ;эр ёыєўрщ юЄЁшЎрЄхы№э√ї
        ld e,a ;d=maxdistdiv
        ld a,(de) ;inklevel
        cp ch3 ;chunklevel[x%4][y%4]
        ld a,c
        rla ;bits
        exx
        ld (de),a ;чряшёрЄ№ bits
        inc de
        exx
        endm
;Єръшї 4 °Є (фы  Ёрчэ√ї Їрч y)

 ;0 схёёь√ёыхээю (тёхуфр NC), яю¤Єюьє тёх чэрўхэш  єтхышўхэ√ эр 1:
dithermcy0
        DITHERMC 0x1, 0xd, 0x3, 0xf
        ret
dithermcy1
        DITHERMC 0x9, 0x5, 0xb, 0x7
        ret
dithermcy2
        DITHERMC 0x4, 0x10, 0x2, 0xe
        ret
dithermcy3
        DITHERMC 0xc, 0x8, 0xa, 0x6
        ret

tmaxdistdiv:
h=maxdist/4=0..63
l=R-Rmin=0..255
out: 0..16 = (R-Rmin)/maxdist
ъюьрэф√ cp сєфхЄ т фшрярчюэх 1..16, тёх ьюуєЄ т√фрЄ№ C/NC

        
ъєфр чряшё√трЄ№ attr ш c?
тёх юъэр ётюсюфэ√! (ьюцэю юфэю юъэю = tmaxdistdiv)
ьюцэю ъырёЄ№ яюфЁ ф: attreven, bitseven, attrodd, bitsodd
Єюуфр т√тюф эр ¤ъЁрэ сєфхЄ ъръ т 16Ў
р ьюцэю ЁрчфхышЄ№ эр сыюъ рЄЁшсєЄют ш сыюъ сшЄют
Єюуфр т√тюф эр ¤ъЁрэ Єръющ:
        pop de
        ld (hl),e
        set 5,h
        ld (hl),d
        inc hl
        pop de
        ld (hl),d
        res 5,h
        ld (hl),e
        inc hl
:38t/2byte = 19t/byte = 9.5t/pix


        align 256
t64to16ink
        dup 64
;%00003210 => %.3...210
_3=$&8
_210=$&7
        nop ;db (_3*0x08) + (_210*0x01) ;эрфю ухэхЁшЁютрЄ№ шч чрфрээющ ярышЄЁ√
        edup
chrbuf
        ds 8 ;R
        ds 8 ;G
        ds 8 ;B
        ds 256-64-24-64
t64to16paper
        dup 64
;%00003210 => %3.210...
_3=$&8
_210=$&7
        nop ;db (_3*0x10) + (_210*0x08) ;эрфю ухэхЁшЁютрЄ№ шч чрфрээющ ярышЄЁ√
        edup

╩рЁЄшэър т√уы фшЄ ыєў°х, хёыш ў╕Єэ√х ёЄЁюўъш юъЁєуы ■Є ьръё. ЎтхЄр ттхЁї эр +32, р эхў╕Єэ√х юъЁєуы ■Є ьшэ. ЎтхЄр тэшч эр -32
─шыхььр:
хёыш т√сшЁрЄ№ ьшэ ш ьръё ё чрярёюь, Єю яЁюёЄ√х эрфяшёш яюыєўр■Єё  эр Їюэх °єьр
р хёыш т√сшЁрЄ№ схч чрярёр, Єю яыюїю эр ЎтхЄюяхЁхїюфрї

       
т jpeg RTAB,GTAB,BTAB эх шёяюы№чє■Єё ?

TODO т jpeg ёЄЁюъш >1024, фы  ¤Єюую ЁхэфхЁшЄ№ сыюъш ёЄЁюъ т юфшэ яюЄюъ фышэющ эхёъюы№ъю ёЄЁрэшЎ ё ўхЁхфютрэшхь ЎтхЄют√ї ёюёЄрты ■∙шї (Y,U,V -> яюёых яхЁхёў╕Єр ёЄрэютшЄё  R,G,B)
ьюцэю яЁюёЄю эх ЁхэфхЁшЄ№ ърцфє■ тЄюЁє■ ёЄЁюъє, эю Єюуфр эхы№ч  сєфхЄ єтхышўшЄ№

girl.jpg 23.02.2019 71680t = 71.82 s (JPEG v0.50 ў/с = 39 s, RGB = 83.79 s)


TODO т gif яюяЁюсютрЄ№:
add a,a
call z,readbyte
adc hl,hl ;result