Welcome, Guest. Please login or register.


Author Topic: Színátmenetek (Read 38148 times)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Színátmenetek
« Reply #15 on: 2017.November.20. 14:33:54 »
az ami nem túl precíz maga a nick harver, mivel a kéknek csak 2 bit jutott, a pirosnak 3, zöldnek 3
Vigyázat! Szektás vagyok! :)

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Színátmenetek
« Reply #16 on: 2017.November.20. 14:35:26 »
az ami nem túl precíz maga a nick harver, mivel a kéknek csak 2 bit jutott, a pirosnak 3, zöldnek 3
Hát még mindig jobb, mint a CPC 27 színe, meg a többiek 16-ja :D

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Színátmenetek
« Reply #17 on: 2017.November.20. 14:37:38 »
a kéknek csak 2 bit jutott, a pirosnak 3, zöldnek 3
A 21. század első évtizedeiben lassan-lassan kezdem megérteni az EP működését. :D
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Színátmenetek
« Reply #18 on: 2017.November.20. 17:38:47 »
Egész R,G,B értékek és NICK színek között konvertáló rutinok:
[ Guests cannot view attachments ]

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Színátmenetek
« Reply #19 on: 2017.November.20. 20:27:04 »
Egész R,G,B értékek és NICK színek között konvertáló rutinok:
Ez miket ír ki pontosan? Az I helyére be kell írni annak a színnek a kódját, amelyet át akarunk írni RGB értékre?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: Színátmenetek
« Reply #20 on: 2017.November.21. 10:05:42 »
az ami nem túl precíz maga a nick harver, mivel a kéknek csak 2 bit jutott, a pirosnak 3, zöldnek 3
Ennek ellenére kékből van a legtöbb szín.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Színátmenetek
« Reply #21 on: 2017.November.21. 13:30:06 »
Ez miket ír ki pontosan? Az I helyére be kell írni annak a színnek a kódját, amelyet át akarunk írni RGB értékre?

C2R: szín (0..255) -> R (0..7)
C2G: szín (0..255) -> G (0..7)
C2B: szín (0..255) -> B (0..3)

R2C: R (0..7) -> szín (0..73)
G2C: G (0..7) -> szín (0..146)
B2C: B (0..3) -> szín (0..36)

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Színátmenetek
« Reply #22 on: 2020.March.21. 18:54:37 »
Van valami jó kis kódrészlet, amivel szépen fokozatosan el lehet sötétíteni egy négy színű képet paletta változtatással?
pszeudókód is jó, mi lenne az a képlet, amivel a színkódot ilymódon lehet változtatni?
*** Speicherplatz zu klein

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Színátmenetek
« Reply #23 on: 2020.March.21. 19:51:10 »
En csak a fix elore definialt x palettas modszert tudom.
A kepletes szerintem bonyolult, nem is tudom hogy csinalnam meg.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Színátmenetek
« Reply #24 on: 2020.March.21. 19:57:03 »
Van egy otletem, a szin kodjabol kiszamolni az r g b osszetevok decimalis erteket, majd mindharmat csokkenteni eggyel, ujra szinkodda alakitani, ha az egyik osszetevo elerte a 0-t azt mar nem csokkenteni, annyi, hogy a keknek csak negy kombinacioja van, megszoroznam kettovel a csokkenteshez.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Színátmenetek
« Reply #25 on: 2020.March.21. 20:25:59 »
Bemenet
Szinkod: a
Osszetevok ertekei
Red: c
Green: d
Blue: e
Code: [Select]
 ld hl,lpt_colors
fadeout
  ld b,04h
wait
  halt
  djnz wait
  ld b,04h
chng_col
  ld a,(hl)
  ld c,00
  ld d,c
  ld e,c
  rrca
  rl c
  rrca
  rl d
  rrca
  rl e
  rrca
  rl c
  rrca
  rl d
  rrca
  rl e
  rrca
  rl c
  rrca
  rl d
  rl e
  dec c
  jp p,reddec
  Inc c
reddec
  dec d
  jp p,grndec
  inc d
grndec
  dec e
  jp p,bludec
  inc e
bludec
  rr e
  rr d
  rla
  rr c
  rla
  rr e
  rla
  rr d
  rla
  rr c
  rla
  rr e
  rla
  rr d
  rla
  rr c
  rla
  ld (hl),a
  inc l
  djnz chng_col
  dec l
  dec l
  or (hl)
  dec l
  or (hl)
  dec l
  or (hl)
  jr nz,fadeout
« Last Edit: 2020.March.21. 20:31:05 by geco »

Offline Tomato77

  • EP user
  • *
  • Posts: 397
  • Country: hu
    • Támogató Támogató
Re: Színátmenetek
« Reply #26 on: 2020.March.21. 20:49:11 »
Basic-ben egy ilyet dobtam össze. A PALETTE szubrutinnal kell beállítani a palettát, mert az fogja eltárolni a színek kódját. Eredetileg lassítást is akartam beletenni, de így is nagyon lassú lett. :)

Code: [Select]
100 PROGRAM "SOTET.BAS"
105 DIM R(0 TO 3),G(0 TO 3),B(0 TO 3)
110 GRAPHICS HIRES 4
120 CALL PALETTE(BLACK,WHITE,RED,GREEN)
130 FOR I=1 TO 50
140   SET INK RND(3)+1
150   PLOT RND(1280),RND(720);
160 NEXT I
170 PRINT "Nyomj meg egy billentyut!"
180 GET KEY$
190 IF KEY$="" THEN 180
200 CALL SOTET
300 !
310 DEF PALETTE(C0,C1,C2,C3)
320   NUMERIC COL(0 TO 3)
330   COL(0)=C0:COL(1)=C1:COL(2)=C2:COL(3)=C3
340   SET PALETTE C0,C1,C2,C3
350   FOR I=0 TO 3
360     LET R(I)=(COL(I) BAND 1)*4+(COL(I) BAND 8)/4+(COL(I) BAND 64)/64
370     LET G(I)=(COL(I) BAND 2)*2+(COL(I) BAND 16)/8+(COL(I) BAND 128)/128
380     LET B(I)=(COL(I) BAND 4)/2+(COL(I) BAND 32)/32
390   NEXT
400 END DEF
500 !
510 DEF SOTET
520   NUMERIC CT(0 TO 3)
530   FOR J=6 TO 0 STEP-1
540     FOR I=0 TO 3
550       LET RT=INT(R(I)*J/7)
560       LET GT=INT(G(I)*J/7)
570       LET BT=INT(B(I)*J/7)
580       LET CT(I)=(RT BAND 4)/4+(RT BAND 2)*4+(RT BAND 1)*64+(GT BAND 4)/2+(GT BAND 2)*8+(GT BAND 1)*128+(BT BAND 2)*2+(BT BAND 1)*32
590     NEXT I
600     SET PALETTE CT(0),CT(1),CT(2),CT(3)
610   NEXT J
620 END DEF

Ellenőriztem a programot, nincs benne koronavírus. :)
Kotasoft

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Színátmenetek
« Reply #27 on: 2020.March.21. 22:05:29 »
Bemenet

Hú, sejtettem, h valami ilyesmi gigadolog lesz a hülye színkódolás miatt... :-)
Köszi, mindjárt ki is próbálom!
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Színátmenetek
« Reply #28 on: 2020.March.21. 22:07:29 »
Basic-ben egy ilyet dobtam össze. A PALETTE szubrutinnal kell beállítani a palettát, mert az fogja eltárolni a színek kódját. Eredetileg lassítást is akartam beletenni, de így is nagyon lassú lett. :)

Ellenőriztem a programot, nincs benne koronavírus. :)

Ez tök jó lett, ilyesmire gondoltam! :-)
*** Speicherplatz zu klein

Offline Tomato77

  • EP user
  • *
  • Posts: 397
  • Country: hu
    • Támogató Támogató
Re: Színátmenetek
« Reply #29 on: 2020.March.22. 10:42:29 »
Kicsit játszottam a programmal. 16 színű módban szebb (persze csak az alsó 8 színt használja), és előbb kiszámolja a szín összetevőket, aztán sötétít, így Basicben is egész tűrhető a sebesség.

Code: [Select]
100 PROGRAM "SOTET16.BAS"
105 DIM R(0 TO 7),G(0 TO 7),B(0 TO 7)
110 GRAPHICS HIRES 16
115 RANDOMIZE
120 CALL PALETTE(RND(16),RND(256),RND(256),RND(256),RND(256),RND(256),RND(256),RND(256))
130 FOR I=1 TO 100
140   SET INK RND(7)+1
150   PLOT RND(1280),RND(720);
160 NEXT I
170 PRINT "Nyomj meg egy billentyut!"
180 GET KEY$
190 IF KEY$="" THEN 180
200 CALL SOTET
300 !
310 DEF PALETTE(C0,C1,C2,C3,C4,C5,C6,C7)
320   NUMERIC COL(0 TO 7)
330   COL(0)=C0:COL(1)=C1:COL(2)=C2:COL(3)=C3
335   COL(4)=C4:COL(5)=C5:COL(6)=C6:COL(7)=C7
340   SET PALETTE C0,C1,C2,C3,C4,C5,C6,C7
350   FOR I=0 TO 7
360     LET R(I)=(COL(I) BAND 1)*4+(COL(I) BAND 8)/4+(COL(I) BAND 64)/64
370     LET G(I)=(COL(I) BAND 2)*2+(COL(I) BAND 16)/8+(COL(I) BAND 128)/128
380     LET B(I)=(COL(I) BAND 4)/2+(COL(I) BAND 32)/32
390   NEXT
400 END DEF
500 !
510 DEF SOTET
520   NUMERIC CT(0 TO 7,0 TO 7)
530   FOR J=6 TO 0 STEP-1
535     PRINT ".";
540     FOR I=0 TO 7
550       LET RT=INT(R(I)*J/7)
560       LET GT=INT(G(I)*J/7)
570       LET BT=INT(B(I)*J/7)
580       LET CT(J,I)=(RT BAND 4)/4+(RT BAND 2)*4+(RT BAND 1)*64+(GT BAND 4)/2+(GT BAND 2)*8+(GT BAND 1)*128+(BT BAND 2)*2+(BT BAND 1)*32
590     NEXT I
600   NEXT J
610   FOR J=6 TO 0 STEP-1
620     SET PALETTE CT(J,0),CT(J,1),CT(J,2),CT(J,3),CT(J,4),CT(J,5),CT(J,6),CT(J,7)
630   NEXT
640   PRINT
650 END DEF
Kotasoft