Temat: zmiana koloru w DLI w jednej linii

Witam,

Jest taka metoda kolorowania ekranu że w przerwaniu DLI w trakcie jak "plamka" biegnie poziomo
zmienia się kolor. (jest to chyba wykorzystywane np. w Graph2Font).

Pytanko takie mnie naszło: czy ta metoda (jeżeli użyta powiedzmy w 50% ekranu)
nie obciąży zbytnio procesora?
Czyli inaczej, czy starczy jeszcze czasu procesora na obsługę gry?

pozdrawiam

2

Odp: zmiana koloru w DLI w jednej linii

Różnie określają ten sposób zmiany kolorów, ale przerwanie DLI samo w sobie nie jest wystarczające, można wywołać program przerwania DLI ale dalej trzeba już sie synchronizować odpowiednią liczbą cykli CPU.

Uruchom G2F (Graph2Font), wybierz MODE=GED+ lub MODE=GED--, przejdź do EDIT RASTERS (ALT+R), zobaczysz okno z domyślną listą rozkazów CPU dla jednej linii ekranu, teraz możesz ją modyfikować co wpłynie na miejsce zmiany kolorów na ekranie, ale idealnej dowolności nie ma.

Podsumowując metoda o którą pytasz to dzielenie rastra "split raster", w tej metodzie nie uzywasz rejestru $D40A jak ma to miejsce w przerwaniu DLI, tylko musisz napisac swoj program którym idealnie co do cyklu zsynchronizujesz sie z tworzoną linia obrazu. Musisz jeszcze wiedzieć ile czasu (w cyklach CPU) zajmuje stworzenie liniii obrazu dla konkretnej szerokości obrazu. G2F obsługuje dzielenie rastra dla ekranu normalnego i wąskiego, dla szerokiego jest to mało opłacalne.

Innym programem wykorzystującym dzielenie rastra jest GED i pewien program FOX'a, którego nazwy zapomnialem, oba na małe ATARI.

Pytanko takie mnie naszło: czy ta metoda (jeżeli użyta powiedzmy w 50% ekranu)
nie obciąży zbytnio procesora?
Czyli inaczej, czy starczy jeszcze czasu procesora na obsługę gry?

Jeśli zostanie użyta w 50% ekranu to CPU w 50% ekranu będzie zmieniał kolory i na nic więcej nie będzie miał czasu.

Trzeba tak naprawdę pomieszać zmiany w rastrze ze zmianami na przerwaniu DLI jeśli to możliwe bo najczęściej są fragmenty ekranu które wymagają zmian koloru co linie i takie fragmenty które tego nie wymagają. Można wtedy wywoływać przerwanie DLI dla konkretnej linii ekranu, odpowiednio sie zsynchronizować i dalej kontynuować zmiany za pomocą dzielenia rastra. Ogólnie wymagana jest optymalizacja programu przerwania DLI, przykładem takiej optymalizacji jest zbliżająca sie gra GETRIS. Czyli jeśli jesteś dobrym koderem to dasz radę.

Ostatnio edytowany przez tebe (2006-02-07 18:53:14)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

3

Odp: zmiana koloru w DLI w jednej linii

tebe napisał/a:

Podsumowując metoda o którą pytasz to dzielenie rastra "split raster", w tej metodzie nie uzywasz rejestru $D40A jak ma to miejsce w przerwaniu DLI

Jeśli zostanie użyta w 50% ekranu to CPU w 50% ekranu będzie zmieniał kolory i na nic więcej nie będzie miał czasu.

Mozna tak, a można i z $D40A z przerwaniem DLI tylko w 1szej linii obszaru splitowanego.
Grunt, aby pierwsze połowa kodu wykonywanego w 1 linii, (do tych 50%) byla wycyklowana,
nastepna (po zmianie koloru) juz nie musi być, byle trwała krócej niż do końca linii po czym
STA $D40A i następna linia.

---==<<Sc0rpi0>>==---

4

Odp: zmiana koloru w DLI w jednej linii

A jak to sie ma do NTSC? Czy na NTSC kolory wypadną w innych miejscach, czy różnica jest pomijalna?

http://www.5oft.pl/

5

Odp: zmiana koloru w DLI w jednej linii

jesli w NTSC narysowanie linii ekranu zajmuje tyle samo czasu CPU to tak, jesli nie to nie

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

6

Odp: zmiana koloru w DLI w jednej linii

Coś się udało :-)

Tylko dlaczego plamka "szybciej biegnie" po lewej stronie ekranu?
Myślałem że to błąd emulatora, ale nie - jest to też opisane w instrukcji G2F.

Co swoją drogą potwierdza fakt że w demie "Bitter Reality"
duży scroll w części "Partyland" jest robiony tą techniką - (rispekt!)
Ponieważ też się tak wydłuża po lewej stronie.

Tylko jak zrobiono przesów poziomy (wstawiali nop'y w kodzie splitującym)? :-|

Ostatnio edytowany przez unicorn7 (2006-02-11 12:49:06)

7

Odp: zmiana koloru w DLI w jednej linii

w G2F i Edit Raster jest coś takiego jak GLOBAL OFSET przyjmuje zakres <-8..8> jest to opoznienie przed glownym programem realizujacym dzielenie rastra, jego zmiana powoduje przesuniecie zmian kolorow na calym ekranie

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

8

Odp: zmiana koloru w DLI w jednej linii

tebe napisał/a:

jesli w NTSC narysowanie linii ekranu zajmuje tyle samo czasu CPU to tak, jesli nie to nie

Chyba już niedługo będziesz wiedział, bo zdaje się, że Getris nie rusza pod NTSC...

http://www.5oft.pl/

9

Odp: zmiana koloru w DLI w jednej linii

Czy ktoś próbował Raster Split na  65c816 ?
Czy zmianę koloru w rastrze mozna na nim robić kilka razy szybciej?

10

Odp: zmiana koloru w DLI w jednej linii

Zależy od taktowania. Na 65c816 z 1,77 MHz raczej niewiele zyskasz. A dopałkę mało kto ma (laoo ma warpa, a pasiu ma f7 - i to na razie wszystko).

KMK
? HEX$(6670358)

11

Odp: zmiana koloru w DLI w jednej linii

na 65816 mozna zrobic to szybciej jesli uzyjesz 16-bit rejestrow, tyle ze dotyczy to specyficznej kolejnosci wypelniania rejestrow kolorów

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

12

Odp: zmiana koloru w DLI w jednej linii

No to właśnie mam za ów niewielki zysk. W porównaniu z warpem nawet.

Ostatnio edytowany przez drac030 (2006-06-11 23:35:54)

KMK
? HEX$(6670358)

13

Odp: zmiana koloru w DLI w jednej linii

unicorn7 napisał/a:

Tylko dlaczego plamka "szybciej biegnie" po lewej stronie ekranu?
Myślałem że to błąd emulatora, ale nie - jest to też opisane w instrukcji G2F.

Co swoją drogą potwierdza fakt że w demie "Bitter Reality"
duży scroll w części "Partyland" jest robiony tą techniką - (rispekt!)
Ponieważ też się tak wydłuża po lewej stronie.

Jest to spowodowane przez Antic, który w tym właśnie czasie, kiedy plamka biegnie po lewej stronie ekranu korzysta ze swoich praw do zatrzymywania CPU. Nie jestem w tej chwili pewien, ale chyba w celu pobrania danych z pamięci ekranu. Było to łądnie opisane w jakimś artykule Foxa w Syzygy. Artykuł polecam, jeśli chcesz się bawić w cyklowanie koloru.