Autor Wątek: Unrainer dla 48  (Przeczytany 3017 razy)

PABB

  • *****
  • Wiadomości: 1098
  • Miejsce pobytu:
    Bielsko-Biała
Unrainer dla 48
« dnia: 2020.02.16, 13:10:54 »
... sprawdzaliście w praktyce? Zastanawiam się, czy to w ogóle ma sens...

https://z00m.speccy.cz/?file=hardware/umbrella


Tygrys

  • Administrator
  • *****
  • Wiadomości: 4538
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Unrainer dla 48
« Odpowiedź #1 dnia: 2020.02.16, 13:14:39 »
Oprócz tego że śnieżenie tam występuje, a oprócz tego jest kilka rosyjskich dem, które działają na 48kB i ustawiają przerwania poniżej $80 i wtedy nie śnieży, to sens jest taki że to kolejny 'mod'. Przez wiele lat nawet nie wiedziałem o tym defekcie, dlatego że używałem Timexa.

PABB

  • *****
  • Wiadomości: 1098
  • Miejsce pobytu:
    Bielsko-Biała
Odp: Unrainer dla 48
« Odpowiedź #2 dnia: 2020.02.16, 13:58:11 »
... a możesz podesłać mi przykład czegoś, co na 48 śnieży? Zrobię ten mod na szybko i sprawdzę czy faktycznie działa :)

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4538
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Unrainer dla 48
« Odpowiedź #3 dnia: 2020.02.16, 14:13:17 »
Na szybko napisałem program, który pokazuje efekt deszczowy na gumiaku.

PABB

  • *****
  • Wiadomości: 1098
  • Miejsce pobytu:
    Bielsko-Biała
Odp: Unrainer dla 48
« Odpowiedź #4 dnia: 2020.02.16, 19:09:07 »
Grazie - wieczorkiem się za to zabiorę :)

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Unrainer dla 48
« Odpowiedź #5 dnia: 2020.02.17, 08:10:59 »
Tak gwoli uściślenia - "śnieg" wcale nie wymaga ustawienia/włączenia przerwań w tryb IM2. Wystarczy ustawienie rejestru I na wartość poniżej $80:

    org $8000
    ld a,$7f
    ld i,a
    ret

Problem bierze się z tego, że podczas cyklu RFSH procesor wystawia na magistrali adresowej parę IR - jeśli I jest ustawione na wartość pomiędzy $40 a $7f daje to adres od $4000 do $7fff. ULA nie sprawdza przy wykrywaniu contention czy RFSH jest aktywne i w efekcie odczyty ekranu trafiają w niewłaściwe miejsca i ekran "śnieży".


KWF

  • *****
  • Wiadomości: 6833
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Odp: Unrainer dla 48
« Odpowiedź #6 dnia: 2020.02.17, 10:35:56 »
Hm, czy ten efekt występuje przy pamięciach statycznych?
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Unrainer dla 48
« Odpowiedź #7 dnia: 2020.02.17, 10:47:53 »
To nie jest kwestia rodzaju pamięci. RFSH to sygnał z procesora - jest generowany niezależnie od tego, co procesor robi. ULA nie uwzględnia go przy wykrywaniu contention, nie blokuje procesora i czyta dane nie z tego adresu z którego należy. Jak wymienisz pamięci na statyczne nie ruszając nic innego RFSH dalej będzie wystawiane, cykl odświeżania dalej będzie wystawiał I na magistralę adresową i obraz dalej będzie śnieżył.

KWF

  • *****
  • Wiadomości: 6833
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Odp: Unrainer dla 48
« Odpowiedź #8 dnia: 2020.02.17, 11:31:23 »
Ok, wiem o /RFSH, ale zle zadalem pytanie. Chodzilo mi o nowe klony z pamieciami statycznymi i implementacja ULA w CPLD, albo zamienniki ULA np. NebULA. Harlequin powinien sniezyc jak potrzeba (http://www.zxdesign.info/harlequinSnow.shtml).

Pytanie za 100pkt. czy jest sens zmieniac implementacje w CPLD np w ZX Spiderze 48, aby wyeliminowac to sniezenie? Czy jest ono efektem wykorzystywanym w demach i innym sofcie?
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Unrainer dla 48
« Odpowiedź #9 dnia: 2020.02.17, 11:38:18 »
Jeśli zamiennik implementuje 100% zgodności - będzie śnieżyć. Jeśli nie - oczywiście nie będzie ;)

Wiem, że chyba jedna czy dwie gry używały tego jako "efektu" dla dodania dynamiki przy wybuchach. Moim zdaniem eliminacja śniegu w 48 jest bez sensu. Może mieć sens w 128 jeśli planujesz na nim odpalać dema/gry ze wschodu - Pentagony nie mają tej przypadłości i programiści się nią nie przejmują. Co więcej - w wypadku 128 ustawienie I poniżej $80 o ile pamiętam poza śniegiem po jakimś czasie powoduje reset (ale szczerze mówiąc nie analizowałem tematu - gdzieś tylko o tym czytałem) więc tym bardziej może to mieć sens.

edit: Cytat z doców na WoS: "One program which uses this to generate a nice effect is Vectron."
edit2: Cytat z doców na WoS w kwestii 128: "The ULA bug which causes snow when I is set to point to contended memory still occurs, and also appears to crash the machine shortly after I is set to point to contended memory."

KWF

  • *****
  • Wiadomości: 6833
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Odp: Unrainer dla 48
« Odpowiedź #10 dnia: 2020.02.17, 11:48:32 »
W 128K to wada, a w 48K przypadlosc z ktora mozna zyc.

Rzucilem oko na schemat HQ48 i trzeba go zmusic do sniezenia poprzez odpiecie nogi 6 ukladu U4 (74HC138) i podpiecie jej stale do +5V.

W znanych mi implemetacjach ULA w CPLD, nie ma podpietego sygnalu /RFSH do ULA, wiec jest szasa ze snieza.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76