Autor Wątek: Spectrum i wyświetlanie obrazu na telewizorze - czy da się zrobić prawdziwy interlace?  (Przeczytany 36378 razy)

steev

  • *****
  • Wiadomości: 1366
  • Miejsce pobytu:
    inode 42
Cytuj
Ale po co?
128k lub Timex w dłoń.
To ja poproszę nagranie z oscyloskopu pokazujące, że ULA generuje dwie różniące się od siebie ramki zgodne ze standardem PAL (pokazane np. tu http://martin.hinner.info/vga/pal.html na obrazku Field Synchronization of PAL System). Do tego czasu będę twierdził że generuje tylko jedną ramkę (zawsze pierwszą a nie naprzemiennie pierwszą i drugą z taką samą treścią) i na gołym, niemodyfikowanym sprzęcie nic się nie da zrobić
Machines should work. People should think.

matofesi

  • *****
  • Wiadomości: 2049
  • Miejsce pobytu:
    Toruń/Poland
Chyba w końcu będę musiał sobie ULA Booka zeskanować tak, żeby mieć go zawsze pod ręką...

Głowy sobie nie dam uciąć, ale mam wrażenie, że w opisie generatora sygnałów wideo jest coś o generowaniu półobrazów a w każdym razie jest chyba różnica w synchronizacji między "parzystymi" a "nieparzystymi" półobrazami choć dane lecą w obu te same. Nawet jeśli jest tak jak mi się wydaje, to ciężko byłoby to zrobić na fizycznym sprzęcie - trzeba by wyprowadzić na zewnątrz informację z generatora synchronizacji i na tej podstawie przełączać pamięć "podkładaną" do ULA do pobierania danych. Albo dodać kawałek elektroniki na rympał podmieniającego pamięć co drugą ramkę 50 Hz. Nie wiem jakby to wyglądało w praktyce, ale moim zdaniem jak każdy mrugający tryb - brzydko.

Oczywiście zakładając, że nie popieprzyły mi się różne konstrukcje (obsługę prawdziwego interlace'u ma V6) i że faktycznie jest jakakolwiek różnica między półobrazami. Można też spróbować zignorować całą teorię i po prostu na rympał zmodyfikować obsługę pamięci w jakimś 128 i popatrzeć co z tego wyniknie i jak bardzo źle będzie wyglądało ;)

steev

  • *****
  • Wiadomości: 1366
  • Miejsce pobytu:
    inode 42
Głowy sobie nie dam uciąć, ale mam wrażenie, że w opisie generatora sygnałów wideo jest coś o generowaniu półobrazów a w każdym razie jest chyba różnica w synchronizacji między "parzystymi" a "nieparzystymi" półobrazami choć dane lecą w obu te same.
A to by nie oznaczało, że pomiędzy dwoma przerwaniami ULA musiałaby zachować gdzieś pamięć obrazu, żeby druga ramka faktycznie była identyczna?
Machines should work. People should think.

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Zawsze myślałem że ULA wysyła normalny sygnał PAL interlaced z parzystymi i nieparzystymi liniami. Najwyraźniej nie zastanawiałem się głębiej nad tym  ???, bo doszedł bym, że nie ma to sensu przy tak małej rozdzielczości, a jak pisał Chris Smith obraz by drgał, zwłaszcza pojedyncze poziome linie.
Wiadomość, że w obu ramkach jest to samo była jednak tak odkrywcza, że postanowiłem przekonać się eksperymentalnie.

Wnioski:
1. Rzeczywiście jest wysyłany cały ekran Spectrum 50 razy na sekundę.
2. Nie jest to sygnał progressive - jeden wysyłany do telewizora obraz zawiera dwie ramki/ekrany Spectrum, a nie jeden. Inaczej nie dałoby się zrobić takich zdjęć jak 1) i 2).
3. Wysyłanie całego ekranu dwukrotnie powoduje że sztandarowy test na interlace (drganie pojedynczej poziomej linii) nie ma zastosowania, bo linia jest pogrubiona. Zdjęcie 3) jest niezłą ilustracją. Rysowanie linii zajęło w sumie 3 ramki, widać że końcowa faza rysowania znalazła się tylko na jednym "półobrazie".

To są zdjęcia ze "stop-klatki" nagrywarki DVD, a więc z pojedynczego wysyłanego do TV obrazu.

steev

  • *****
  • Wiadomości: 1366
  • Miejsce pobytu:
    inode 42
2. Nie jest to sygnał progressive - jeden wysyłany do telewizora obraz zawiera dwie ramki/ekrany Spectrum, a nie jeden. Inaczej nie dałoby się zrobić takich zdjęć jak 1) i 2).
Dla mnie fotka 2 jest właśnie dowodem że jest to obraz 288p
TV dostaje ramkę z obrazem, wyświetla ją tak jakby miał to być półobraz, czyli z odstępem pomiędzy liniami.
A później zamiast parzystej ramki która by się wpasowała w te odstępy, dostaje ponownie ramkę którą interpretuje jako pierwszą, co powoduje że odstępy pozostają...
Machines should work. People should think.

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Nice try ;)
To jest ekran w momencie tuż po naciśnięciu ENTER. Pole edycji jest czyszczone - komenda BORDER 0 i kursor są już tylko na jednym półobrazie, na następnym półobrazie już ich nie ma, a za to kolor bordera zmienia się na czarny, zmiana zaczęła się pod koniec ramki.
Widać poza tym, że border ma wyświetlone INNE linie niż komenda BORDER!

Poza tym zdjęcie 1) przeczy temu. Napis "... Sinclair Research ..." jest przesuwany do góry i na jednym półobrazie jest na dole, a na drugim jest już przesunięty.

Oczywiście na TV który ma interlace to miga!
Trudno napisać czy jest to prawdziwy interlace, ale nie jest to progressive.

« Ostatnia zmiana: 2014.11.25, 15:17:34 wysłana przez Phonex »

matofesi

  • *****
  • Wiadomości: 2049
  • Miejsce pobytu:
    Toruń/Poland
Dobra. Obrazki Phonexa i pytanie steev'a o buforowanie ekranu między półobrazami uzmysłowiły mi fakt, że musiałem jednak popieprzyć opisy ;)

Sprawdzę jeszcze w domu co dokładnie czytałem w książce i jeśli znajdę coś istotnego to dorzucę :)

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
To ja poproszę nagranie z oscyloskopu pokazujące, że ULA generuje dwie różniące się od siebie ramki zgodne ze standardem PAL (pokazane np. tu http://martin.hinner.info/vga/pal.html na obrazku Field Synchronization of PAL System). Do tego czasu będę twierdził że generuje tylko jedną ramkę (zawsze pierwszą a nie naprzemiennie pierwszą i drugą z taką samą treścią) i na gołym, niemodyfikowanym sprzęcie nic się nie da zrobić

Chyba źle tłumaczę.
ULA generuje to, co generuje - 50 klatek na sekundę i ma daleko gdzieś, co się potem dzieje. Natomiast z kodera LM1889N (MC1377P w przypadku Timexów) wychodzi najstandardowszy PAL, jaki można sobie wyobrazić - zawierający 50 półobrazów, z tym że każdy półobraz stanowi tak naprawdę cały obraz (bo rozdzielczość Spectrum jest mniejsza niż rozdzielczość półobrazu PAL) a jedyna różnica, jaka występuje między ramkami parzystymi a nieparzystymi jest w sygnale synchronizacji, co jest ładnie zobrazowane na cytowanej przez Ciebie stronie:

http://martin.hinner.info/vga/pal.gif (impulsy w sekcji "n")

Nieco niżej jest to wytłumaczone słownie:
Cytuj
Vertical sync is obtained from the last few and first lines of each field. These lines contain a series of special sync pulses which differ on alternate fields: -

The format for field 1 (starting at line 623.. ends at line 5 inclusive):

    6 Pre-equalizing pulses.. 5 long sync pulses... 5 Post-equalizing pulses.

The format for field 2 (starting at line 311.. ends at line 317 inclusive):

    5 Pre-equalizing pulses.. 5 long sync pulses... 4 Post-equalizing pulses.

I teraz cały dowcip polega, by zapodawać parzyste ramki z jednej pamięci obrazu, a nieparzyste z drugiej. Łatwo to przełączać przerwaniami. ULA dostanie po prostu inną porcję danych, a koder PAL grzecznie to zapakuje.

Pytanie, czy ULA sama dba o poprawne generowanie części "n" raz jako 5, raz jako 4 impulsy. Nie podejrzewam. Pytanie 2, czy koder kolorów - jeśli dostaje zawsze 5 impulsów "n" - faktycznie to zmieni na to, jak powinno być, czy "puści" synchronizację dalej bez wnikania w jej treść. I, jak to napisałeś, jest to do obadania oscyloskopem.

matofesi

  • *****
  • Wiadomości: 2049
  • Miejsce pobytu:
    Toruń/Poland
@trojacek Jeśli chodzi ci o proste podawanie dwóch pełnych ekranów z dwóch buforów co drugą ramkę to ci powiem, że będzie brzydko ;) Pierwsze 128 miałem już w czasach okołoamigowych i widziałem jak tam działa interlace więc jak doczytałem, że 128 ma dwa ekrany to od razu popróbowałem co wyrzuca z siebie ULA. Efekt był (na średniej jakości telewizorze czarno-białym) bardzo podobnej jakości co amigowy interlace - mruga jak dzikie. Amiga robi jednak prawdziwy interlace a tu poza mruganiem całość oczywiście traci na ostrości. Może jakby coś pokombinować z synchronizacją albo wymusić przesunięcie o pół linii co ramkę gdzieś po stronie kodera to efekt byłby lepszy. Moim zdaniem całość nie jest warta zachodu (ale moim zdaniem wszystkie mrugające zabawy z grafiką sę niewarte zachodu ;))

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
No widzisz, ale to był stary CRT, a współczesne telewizory LCD/LED nie mrugają, a odwzorowują rzetelnie każdą linię obrazu :)
Może więc warto pokombinować ;)

steev

  • *****
  • Wiadomości: 1366
  • Miejsce pobytu:
    inode 42
ULA generuje to, co generuje - 50 klatek na sekundę i ma daleko gdzieś, co się potem dzieje. Natomiast z kodera LM1889N (MC1377P w przypadku Timexów) wychodzi najstandardowszy PAL, jaki można sobie wyobrazić - zawierający 50 półobrazów, z

Ale to by znaczyło, że sygnały /Y i VIDEO na szynie mają zupełnie inną strukturę (pomijając sygnał koloru), a LM1889N ma układ odtwarzający synchronizację (nie ma. w ogóle to wg schematu spec wykorzystuje tylko połowę scalaka, generującą sygnał chroma subcarrier z sygnałów U-Y i V-Y który jest potem mieszany na dwóch tranzystorach z Y i wpada do modulatora).
Machines should work. People should think.

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Ale to by znaczyło, że sygnały /Y i VIDEO na szynie mają zupełnie inną strukturę (pomijając sygnał koloru), a LM1889N ma układ odtwarzający synchronizację (nie ma. w ogóle to wg schematu spec wykorzystuje tylko połowę scalaka, generującą sygnał chroma subcarrier z sygnałów U-Y i V-Y który jest potem mieszany na dwóch tranzystorach z Y i wpada do modulatora).

No to lipa :(

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
@matofesi
Racja, tu piszą, że ma 256x384, ale że nie można go było zsynchronizować z monitorem https://en.wikipedia.org/wiki/ZX_Spectrum_graphic_modes#Interlace
Trzeba by jakoś wskazać który ekran wyświetla parzyste!

Gryzor

  • *****
  • Wiadomości: 2010
  • Miejsce pobytu:
    Warszawa
Jakby ktos chcial sobie poogladac na 128k:

steev

  • *****
  • Wiadomości: 1366
  • Miejsce pobytu:
    inode 42
Ech, a gdyby Sir Clive nie poskąpił na ULA, mogłoby to wyglądać całkiem przyjemnie... :)
Machines should work. People should think.