Jak byla myslena ta poznamka s nemoznosti zmenit jas sede u Spectra? Co si pamatuju, tak tam bylo pro kazdy ctverecek 8x8 bodu moznost priradit dve barvy, INK a PAPER, a celemu ctverecku nastavit normalni nebo vyssi jas (BRIGHT ve spectracke hantyrce). Barvy byly: BLACK, BLUE, RED, MAGENTA, GREEN, CYAN, YELLOW a WHITE. Dalo by se tedy i rict, ze tedy bylo dvanact barev (modra, cervena, fialova, zelena, svetle modra a zluta, kazda ve dvou odstinech) a pak cerna a bila a dve stupne sedi. Kazdopadne moznych kombinaci v ramci ctverecku bylo pomerne malo.
Mozna by nebylo taky od veci zminit moznost prepinani pametovych bank s dvema ruznymi videoram, diky cemuz slo na pokrocilejsich klonech puvodniho Spectra tvorit obrazky s vice barvami. A dalsi zajimavosti bylo kresleni do BORDERu. Dalsi podivnosti byla organizace videoram, radky nesly za sebou, ale ve trech blocich a v nich navic prokladane. Atributy (tedy ty barvy a jasy) pak uz sly normalne za sebou po radcich. No a konecne by asi za zminku stala poznamka o dvou v zadratovanem BASICu pouzitych souradnicovych systemu (pro body nula vlevo dole a pro atributy vlevo nahore). Sice se to netyka primo pixelartu, ale je to zajimave.
Barvova paleta Spektra je jasna, ale mel jsem na mysli to, ze se nedalo prepnout do ciste grayscale rezimu. Napriklad na Atarku to mozne bylo - misto barvovych odstinu se pouzivaly pouze stupne sede (16 stupnu sedi). Kdyby speccy melo prepinani barvy-stupne sedi (elektronicky je to docela jednoduche, proste se meni pouze signal Y a ne rozdilove signaly), tak by bylo mozne treba i zobrazovat pekne fotky. Ostatne v demoscene ZX Spectra jsem videl spoustu dem pripravenych prave pro grayscale s nejakou jednoduchou HW upravou (nebo v jednodussich pripadech staci stahnout barevny kontrast na TV :-).
Pokud se dobre pamatuju, tak byla pouze cerna, bila a jedna seda, ta druha nesla nastavit (15 kombinaci misto sestnacti, je to divne, ale tak ULA pracovala). Je to dobre videt tady http://en.wikipedia.org/wiki/ZX_Spectrum_graphic_modes, proste cerna je porad cerna bez ohledu na BRIGHT.
To prokladani video RAM je dobre patrne pri nacitani uvodnich obrazku do her, diky za pripomenuti.
Kdyby jen fotky, v sobotu jsem viděl na ZX Spectru docela pěkné video :-) Kdo tam byl, tak ví. Pravda, je k tomu potřeba ZX Spectrum 128k s DataGearem (DMA) a DivIDE (IDE s CompactFlash). Ale co by spectrista neudělal pro přehrávání 50Hz fullscreen videa v barvách a s trochou toho času na zvuk (zatím jen plánováno), že ano? Pravda, změnu barevné palety do odstínů šedi by to fakt chtělo. Btw. ZX 128 nemá YUV, ale RGB. YUV výstupy mají 16kB a 48kB verze, Didaktik Gama a všechny další klony se 48k ULA. Ostatně pomalou animaci lze přehrávat i z diskety, ale není to ono http://cygnus.speccy.cz/popis_vpl2.php.
Mimochodem, tady je malá galerie obrázků ze ZX Spectra s DMA čipem. V podstatě klasický multikolor, ale barvy se přepínají každé 4 pixely. http://velesoft.speccy.cz/data-gear.htm Pokud vím, tak kromě úplné náhrady grafického čipu neexistuje na ZX Spectrum lepší způsob jak eliminovat problém se čtvercovatostí barev na 8x8 pixelů. Ale to už není o pixel artu, spíš o překonání hardwarového omezení, protože obrázky jsou většinou konvertované.
Ještě doplním, oblíbeným trikem je rychlé přepínání videoram v ZX 128k, dosáhne se tím efektu sloučení dvou obrazů do jednoho. Sice to pekelně bliká (25Hz), ale funguje to, některé hry to používají k zobrazení menu přes obrázek a pod... s mým malým LCD monitorem blikání prakticky nevadí, ale s CRT monitorem, nebo v emulátorech to je dost nepříjemné.
Ovšem při použití ditheringu v kombinaci s vhodnými barvami lze dosáhnout jakéhosi rozšíření barevné palety, jsou dema, kde blikání není téměř znát ani na CRT monitorech a barvy tím lze rozšířit v krajním případě asi na 60. Nicméně jen několik jich je opravdu hezky a bezproblémově použitelných. Typicky v jedné obrazovce zelená a v druhé azurová míchané v překrývající se pixelové šachovnici ... chce to vyzkoušet :-) Na ruských Pentagonech tomu říkají gigascreen ... nejsem si jistý, ale myslím, že přepínání VRAM realizuje hardwarová úprava jejich kopie graf. čipu ULA a to tak, že přepíná po mikrořádcích místo úplně celé VRAM naráz, jako to umí tovární ZX 128k.
Podobne se to resi v novejsich demech na Atarku - myslim to problikavani dvou obrazku pres sebe. Jediny problem je v tom, ze je to koukatelne pouze na originalnim Atarku, protoze v emulatoru obnovovaci frekvence originalniho obrazu (50/60 Hz) koliduje s obnovovaci frekvenci "hostujiciho" pocitace a vysledek je vetsinou nekoukatelny kvuli "zaznejim".
Mimochodem mam dojem, ze takto byla resena hneda barva uz u starickeho Jet Set Willyho ne? Ale nejsem spectrista, mozna si to s necim pletu.
Uz si nepamatuju, jak to s tou cernou bylo, ale na tom obrazku z Wikipedie rozdil vidim. Mozna mam jenom oci jako osm sokolu, nevim.
Jinak ja mel doma nejprve velkou CB televizi Tesla Neptun. Pozdeji jsem to obcas pripojil k barevne televizi, ale tam jsem se setkal s problemem (ktery byl castecne viditelny i na tom Neptunu) - jakmile se nekde pravidelne stridaly pixely dvou barev, pres takto "obarvenou" plochu litaly sikme pruhy z tech dvou barev. Dost to otravovalo a nevedel jsem, jak se toho zbavit. Mozna to bylo tim, ze jsem to provozoval klon ze Skalice, nikoli original Spectrum.
Asi by za zminku stala jeste pseudografika, slozena ze ctverecku 4x4 pixelu, ktere se vkládaly vlastně jako zvláštní pseudograficke znaky.
To je pouze zrakovy klam :-) Doopravdy, kdyby pod temi cernymi pruhy nebyla ty dva modre pruhy, neuvidite rozdil. Schvalne jsem si ten obrazek stahnul a otevrel v prohlizeci obrazku (IrfanView). Celkovy pocet barev=15, po najeti "pipetou" na cerny pruh je to porad #000000.
To stridani barev a poblikavani nastalo v pripade, kdyz se zobrazila sachovnice? Spektralni sirka televize by afaik mela na prenos barev ze Spectra (256 pixelu na sirku+nejaky border) stacit (problemy mela treba Amiga ve vyssich rozlisenich), jestli nahodou neslo o problem PAL/SECAM?
Jeste me napada, ze na starsich televizich se dal doladit color burst (nove televize to delaji automaticky), vetsinou stacilo snizit barevny kontrast (stejny problem mela Color Oravan, kdyz se barvy "presmahly").
Jojo, pri sachovnicich. Nebylo to ale poblikavani, spis opravdu pruhy celkem pomalu se posouvajici tam a pak zase treba zpet (tak, jak to popisuje prispevek od jakeho si C++ gurua o neco niz). Dalo se to videt i na CB televizi, jenze tam to vetsinou nebyl moc velky problem, nebot pruhy byly jasove podobne, a tak to tolik nerusilo.
sikme zabarvene pruhy vznikaly interferenci 4.43 MHz barvoniosne s 7MHz, generujicimi pixelclock (ULA internals). podle teploty a plavani frekvence obou krystalu pruhy bud jezdily sem-tam, nebo i castecne mizely, pokud se ve snimcich jdoucich po sobe fazove vyrusily.
to je mimochodem i duvod, proc maji 128k stroje a novejsi modely jiz jen jeden jediny krystal na vsechno (a proc jejich mikroradek netrva 64ys, ale vice, a proc maji 228T/line ane 224, a maji jen 311 radku, a ne 312).
Druhý důvod bordelu v obraze je přimíchaný zvuk, který se přimíchává do kompozitního signálu, aby následně mohl být modulován a TV připojená přes anténu zobrazovala i hrála ...
Stačí uštípnout nožičku jednoho 20pF kondenzátoru a obraz se radikálně zlepší, zmizí asi 3/4 popisovaného bordelu, mihotajicích se barev atd... To co zůstane je prostě vlastnost PAL kompozitního signálu. U některých typů to lze zlepšit oddělením jasové a barvové složky a z kompozitního PALu udělat S-Video nebo ještě lépe (u 128kB modelů) využít rovnou RGB. RGB tohle rušení prakticky neobsahuje (není znatelné), ale chce to monitor/TV s RGB vstupy, které se bohužel nevyskytují moc často. Určitou nadějí jsou LCD TV monitory se Scart konektorem a komponentními vstupy.
... AD 311 řádků ... jestli on to není důvod, proč můj TV -> VGA tuner neobnovuje se ZX 128k obraz a se ZX 48k funguje perfektně. Už jsem změřil i trvání snímkového pulzu, zkusil jsem ho posílit, utlumit, separovat ... :-) V nějlepším případě se obraz nezasynchronizuje, pomalu se posouvá vzhůru, ale obnovuje se. Jakmile se zastaví = tuner reaguje na synchro pulz, tak se obnovovat přestane.
To s tím zvukem se týká ZX 128k, kde je sice vše taktováno z jednoho oscilátoru, ale výsledný obraz vypadá, jako by tomu tak nebylo. Plus známý problém s otočeným tranzistorem ve spoustě ZX 128k +2, kvůli kterému nefunguje správně kompozitní video.
to by se imho dalo zmerit - jeden chybejici skenovaci radek dela pri 50 Hz 50 radku za sekundu, to je pri cca 300 radcich o neco vic nez 6 sekund na to, aby se cely snimek "orotoval".
Ale Speccy prece generuje synchro pulzy a VGA ma prislusny vstup (tusim invertovany), takze by se i normalni multisync VGA monitor (dneska kazdy sunt za 2000,-) mel zasynchronizovat. Nebo vy vytvarite VGA signal az z TV vystupu? my jsme na monitoru zobrazovali i primitivni vystup z CCD cipu, samozrejme trosku "opatchovany", resp. s primichanymi synchro pulsy.
Original 48k byl cisty design - 7MHz pixelclock, 448T na mikroradek (tj. 64ys), 312 radku, tj. 50.08Hz vertikal.
Jenze, ty dva nestastne krystaly - 14MHz do oscilatoru v ULA, a druhy, 4.43MHz, primo u LM1889, delajici ony barevne rozpruhovane interference.
Proto jeste Sinclair u 128k frekvence posunul, aby byly odvoditelne z jedne jedine - ctyrnasobku PAL barvonosne, tj. 17.72MHz. Procesor pouziva petinu, tj. 3.544MHz, AY desetinu.
Takze procesor se nepatrne zrychlil, a radek by trval nepripustnych 63.2ys, coz dekoder BTV nezkousne ani u PALu (u Secamu by to byl duhovity paintrbrush, a ne obraz), trpely by horizontalni hrany. Proto do ULA pridali pro horizontalni vycitani jeste 4T navic, cimz to zase ale o neco presvihli, a radek trval 64.3ys. Jenze, Spectrum pouziva 50Hz vertikalni interrupt jako jediny zdroj externi casove zakladny, tj. je zahodno, aby to bylo skutecne 50Hz, a ne 49.neco, jako by tomu bylo pro 312 radku. Proto jeden ubrali.
Btw. ruska ULA-1 se timto vubec neobtezovala, radku ma 314, a frekvenci 49.7Hz - zrejme podle poucky "relevizor Rubin se syncne i na 60Hz NTSC" (jako ze jo :).
Hmm, to je problem. meli od zacatku mit krystal oscilujici na celem nasobku delky trvani mikroradku a bylo by. Stejne se pocitalo jen s PAL, tak by nebyl vetsi problem.
U Atarka to bylo trosku horsi, tam potrebovali podporovat jak NTSC tak i PAL verzi. Vyresilo se to pouzitim jineho krystalu, takze PALovska Atarka jsou o neco pomalejsi nez NTSC (1,77 MHz, 1,79 MHz). Na obou platformach byl trosku problem s overscanem, takze se nakonec z 312,5 radku zobrazuje pouze 262, z toho 192 standardne (dalsi jdou pridat, ale nekdy se uz rozjede sync).
Jinak to po odecteni synchronizacnich casu vydeleni rozlisenim vychazelo krasne: v nejvyssim grafickem rezimu se za jeden takt musi vykreslit vzdy dva pixely (tam se ovsem nestiha prenaset barvonosny signal, proto je tento rezim monochrom) a v rezimech 160xneco se za jeden takt vykresli vzdy jeden pixel.
Ten horizontalni sync musel byt opravdu tak presnej? Protoze mam dojem, ze ani Atarko nemelo presne 64us
On je problem s frekvencemi. napr. spolecny nasobek 3.5 Mhz a 4.43Mhz se hleda spatne, a pokud se najde, tak je takovy krystal nestandardni. Navic, pocinaje zhruba 20MHz, uz se i spatne rozkmitava, a ma neprijemne elektricomechanicke vlastnosti a zavislosti. A tehdy se na fazove zavesy pro nasobeni kmitoctu jeste moc nehralo.
U televizni normy je 64ys v podsate nejsvatejsi cislo, protoze barevne systemy SECAM i PAL zpozduji o 1 radek signal, a kombinovanim minuleho radku s aktualnim pomahaji synchrodekoderu. A to zpozdeji je delane na 64ys. Pokud by radek trval o neco jinak, bude dekodovani barev o tenhle rozdil posunuty. Tj. kdo ma 64.2 misto 64, bude mit proste jednopixelove barevne tecky spatne obarvene, a s duchem. Proto chceme co mozna nejpresnejsich 64ys.
Naproti tomu vertikala je kazdemu putna, kdyby z ni zx neodvozovalo 50hz inty a nemerilo tim cas, ani by se s temi 311 nenamahali.
Btw. 8bity neprokladasji, tj. nemaji 25 snimku z dvou pulsnimku, ale 50 sobenaprosto podobnych snimku - tj. uz tim trosku znasilnuji tv normu :).
Jasne, ale proc vlastne hledat nasobek techto frekvenci? Kdyz si za zaklad vezmeme pixel clock tak nam po roznasobeni vyjde nejaka frekvence (dejme tomu 2*1,77 MHz, 3*1,77 MHz), na ktere snad Z80 dokaze pracovat ne? Z80 nemel dynamicke registry, takze ten rozsah pracovnich frekvenci mohl byt dost velky.
spis barvonosnou jako zaklad pixelclocku - ta je 4.43MHz. Procesor nemusi mit s pixelclockem nic spolecneho, pokud ULA spravne ohlida jeho pristup do videoram.
Ten problem je jak svazat PAL barvonosnou s pixelclockem, aby pattern 1010101010 nerusil barevnost (primy pomer, maly spolecny nasobek), nebo nevyvolaval zaznejove pruhy (velky spolecny nasobek).
Z80 skutecne nemel dynamicke registry, takze sel provozovat napr. na 1Hz (a pri uzemnene datove sbernici bylo krasne videt, jak adresa cita NOPy, a jak pracuje IR pair v dobe refreshe :).
Speccy VGA výstup nemá a pokud vím, tak zatím neexistuje ani specielní zařízení, které by to uspokojivě řešilo. Ale když už jsem to nakop, tak vysvětlím oč jde.
Mám TV Box Media Tech MT4154, je to externí tuner s kompozitním, S-Video a anténním vstupem. A doufal jsem, že ho použiju s ZX 128k +2 u které mám 5,5" LCD monitor připojený přes RGB. Obraz hezký, ale moc malý.
Tuner s ZX 128k +2 nefunguje a nevím proč.
Vyzkoušel jsem ho se ZX Spectrum 48k (gumákem i pluskem), s Didaktikem Gama 80k (všechny stroje mají stejnou ULA a stejné časování signálu), dále s Atari 800XE a SamCoupe ... (ještě mám hafo osmibitů v zásobě). Tuner fungoval se vším perfektně kromě té +2 a tak pátrám proč vlastně nefunguje. Obraz zobrazí, ale neobnovuje ho, takže obraz trvale zůstane takový jaký byl při připojení kabelu včetně náhodného rozhození ... jsem si jistý, že řádková synchronizace funguje správně.
Dokonce jsem ho rozebral a zkoumal osciloskopem rozdíly, ale nepřišel jsem na nic neobvyklého, ani v datasheetu k čipu atd...
O něco později jsem se doslechl, že někomu dělá stejné problémy nějaká LCD TV, takže možná stejný čip ...
No a když jsem si všiml, že řádků je méně než 312, tak mne napadlo jestli to není příčina, ale jinde se tu zas spekulovalo o Atari, které má TV řádků ještě míň ... což by tuto příčinu vylučovalo.
Budu rád za případnou nápovědu, nicméně zas tak moc mne to nepálí.
Krom toho jsem kdysi zkoušel připojit signály RGB přímo k VGA monitoru a dosáhl jsem nezasynchronizovaného obrazu, možná to někdy zkusím zas, separovat synchro už umím. Jenže 50Hz je na VGA monitor dost málo.
S tim Atarkem vam muzu trosku poradit. NTSC verze Atarka generuje 262 radku, zatimco PAL verze (tu velmi pravdepodobne mate) generuje celych 312 radku. Ovsem "diky" tomu, ze ne vsechny radky jsou videt a soucasne se mohou nektere televize dostat out-of-sync, tak i v PAL verzi dostanete ne-cerny video signal pro 262 radku. Nektere z nich jsou "zakryty" display listem a potom se dostavame ke znamemu cislu 192 radku zobrazitelnych temer na 100 kdekoli.
Pokud se na signal budete divat osciloskopem, tak byste mel mezi kazdym snimkovym synchronizacnim pulsem objevit 312 radkovych syncu. Atarka mely syncy vyvedene na petikolik vzadu, takze s timto by nemel byt problem (je tam i zvuk, ktery je samozrejme kvalitnejsi nez to, co jde do antenniho vystupu).
Jeste k frekvencim (to bude mozna zajimat pana "Ziloga"): NTSC Atarka mely pouze jeden krystal, PAL verze potom zavesny krystal, ktery jel na frekvenci o 5/4 rychlejsi. Tento krystal se pouzival pouze pri cteni video dat.
Trosku presnejsi udaje jsem nasel ve svem rucne psanem (!) sesite:
NTSC: 262 radku (non interlaced)
jeden pixel v hires rezimu (graphics 8)=1/2 hodinoveho signalu
jeden pixel v graphics 15=1 tik hodin
hires rezim Atarka ma teoreticke maximalni rozliseni 352x240
ovsem skutecne se pouziva 320x192
pro jeden radek: 176 tiku hodin => v hires onech 352 pixelu
celkove je dostupnych 228 tiku hodin na jednu radku (protoze syncy a blanky taky neco zaberou, tak pouze 176 se pouziva pro zobrazovani)
pro PAL je to v podstate to same, az na pocet radku
celkove trva vykresleni obrazovky 16684us, vertikalni zatemneni okolo 1400us, horizontalni zatemneni 14us a cela radka onech "svatych" 64us
Velký omyl, spousta TV má RGB vstupy, ale nejméně 3/4 z nich mají jenom S-Video a kompozitní PAL. Některé mají i YUV vstupy a jen pár výjimek má i RGB. A když už tak to jsou ty dražší.
Pardon .... to jsem to poplet, takže ještě jednou.
Velký omyl, spousta TV má konektor Scart, ale nejméně 3/4 z nich mají jenom S-Video a kompozitní PAL. Některé mají i YUV vstupy a jen pár výjimek má i RGB. A když už, tak to jsou ty dražší. Scart konektor sice má kontakty na RGB, ale ty nejsou často zapojené.
Proc to vlastne takto ULA delala? Z cerne na sedou prepnutim BRIGHT je to logicke, proto bych cekal, ze opak bile bude nejaka "tmavsi seda" (reset BRIGHT), podobne jako je tomu napriklad v zakladni palete VGA. Se ctyrmi stupni sede: cerna-tmave seda-svetle seda-bila uz by se dalo delat vic veci, nez primichavat dalsi barvy.
ULA generuje barvy klasicky jako tvrde syte RGB, a non-brightem jen srazi intenzity slozek na 66% (didiaktik m na 50%). Stare ULA to delaly interne, jeste pred YUV maticovanim, novejsi RGB-uly z 128K pak externe, az na konci retezce (primo zatezovanim slozek dodatecnymi 75 Ohm :).
Jo a protoze cerna zadne aktivni slozky nema, nemuze byt ztmavena, a zustava cernou - proto nema cerna bright.
Ale existuje jev dvou halftone-sedych (sachovnice) - dela to setrvacnost pixeloveho multiplexoru v ULA, ktery o chlup svizneji prechazi z PAPER na INK, nez z INK na PAPER - takze v sachovnici zabiraji inkove pixely vetsi plochu, a tak je p0i7 svetlejsi nez p7i0 :>.
Jo, tehdy jeste davaly pocitace i HW smysl, a melo i smysl se v tom vrtat. Dnes jakoukoli kreativitu ubily tuny lamerskeho bloatu :(.
Diky za vysvetleni, i kdyz to snizovani intenzity dalsi impedancni zatezi me teda dostalo :-) Uz zacinam chapat, proc speccy 48k nemelo vystup na monitor :-)
na schematu uplne vpravo :). niormalne to bylo 75:75 z TTl, tj. pulka. pri nebrightu se to stahlo na 75:(75|75), tj. tretina. Suma sumarum 66% :).
Diody a rezistory, to jest to. Jinak jeste hezci je, jak mela Amiga500/500+/600 reseny "DAC" prevodniky - tj. z 4bit TTL nibblu na analogovou hodnotu - tam byla naprosto trivialni proudova sumacni odporova sit :).
Kdyz clovek vidi tahle vycurana technicka reseni, je to parada a blaho. narozdil od konzumnich manazerkych pindu na to, jak je vyrobek progresivni, inovativni a super-duper, ovsem pod podminkou koupe...
Myslite to analogove schema (analogue schematic diagram), kdyz je BRIGHT=0, tak se ty signaly pres diody stahuji smerem k nule? Rozumim, jednoduche a funkcni. Porad mam dojem, ze speccy (mozna i ZX-81 nebo Apple II, protoze Wozniak je opravdu frajer - viz jeho disketova jednotka) je i dnes idealni stroj pro vyuku HW & spol. Ceske pocitace byly sice jeste primitivnejsi (ty nekonecne rady integracu s malou hustotou v IQcku jsou nezapomenutelne), ale ZX je takove dobre vyvazene. Atarko o komous uz jsou slozitejsi na pochopeni - programovani VIC ci Anticu a GTIA atd.
DAC jsem taky resil podobnym zpusobem pri vyrobe COVOXu - 8 stejnych odporu+jeden, spolecny na kterem se vytvarel napetovy potencial pro zesak. Melo to samozrejme silene zasumeni, na me 286 bylo jasne slyset, jak se roztaci disk :-)
To byly casy... Dneska je clovek rad, kdyz ma v pocitaci aspon seriovou linku na ovladani svych udelatek, kdyz uz paralelka je veci minulosti (skoda, vetsinou byly ty vystupni hradla u paralelky tak silny, ze rozsvitily diodu, takze zadne TTL, jak se povidalo - poctivy CMOS :-)