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