C64Power Forum
Inne => Offtopic => Wątek zaczęty przez: Siewca Propagandy w 14 Lipca 2006, 01:27
-
Witam!
Mam problem z grafiką w Basicu. Szukałem na necie stosownych kursów, ale niczego nie znalazłem.
Otóż chcę zrobić płynne przesuwanie się różnokolorowych linii z góry na dół. Problem tkwi w tym, że jak już odpalam program to najpierw całe pole, po którym linie mają się przemieszczać jest zamazywane jednym kolorem, potem drugim i tak do wyczerpania ustawionych kolorów. Chcę żeby było tak,że naraz przesuwają się np. 3 linie różnego koloru naraz jedna pod drugą i żeby się zapętliły. Daję kod.
screen 13
for a = 1 to 256 step 5 `a to kolor linii
for c = 95 to 105 `c to miejsce, po którym mają się przesuwać linie
line (1,c)-(320,c),a
sleep 77
next a
next c
Chodzi mi o taki efekt scrolingu jaki można ujżeć np. na samym początku Giana sisters w crack intrze :).
-
to sie pisze w asemblerze na przerwaniach rastrowych , basci jest za wolno interpetowany aby uzyskac taki efekt
-
Poza tym, kod, który podałeś, nie jest z BASIC-a 2.0 zaimplementiowanego w C-64. W czym Ty to pisałeś??
-
Simons` Basic ?
-
Kod jest w zasadzie poprawny
, (no może poztym że źle zapętliłeś - pomieszałeś zewnętrzną z wewnętrzną)
ale niestety tu wchodzą \'ograniczenia\' commodore (zresztą innych ośmiobitowców też).
Commodore ma 16 kolorów - a twój program korzysta z 55 :).
Co do grafiki - ekran jest podzielony na kwadraciki 8x8 punktów, w których mogą być tylko dwa kolory i to jeszcze jeden z nich to tło tego kwadraciku! Więc przesuwając jedną linię, to jeszcze można to jakoś pogodzić - gorzej wiecej.
Żeby uzyskać zamierzony przez Ciebie efekt musisz tak jak wspomniał rafvte oprzeć to na assemblerze. Wtedy bedzie to wyglądało tak, że podczas wyrysowywania ekranu w odpowiedniej linii będzie się zmieniał kolor tła i w nastepnej znowu itd.
Niestety nie da sie tego zrobić w basicu, bo samo rozpoznanie rozkazu (np line (x,y)-(x,y),c) zabiera pare linii wyswietlania ekranu (mówiąc w dużym skrócie) i nie trafiłbyś w linię którą byś chciał.
Rozkazy assemblera zajmują tylko cząstke takiej linii np. 1/10 - i problem z trafieniem, już jest mniejszy.
pzdr