kategoria: Blitz
[#121] Re: Nauka Blitz Basic

@juen, post #120

No w sumie to o tym pisałeś wcześniej :)

Najlepiej doprowadzić kod do porządku. Wywalić zbędne linie. Dać minimum bit planów i wtedy się dziwić jak coś nie zadziała :)
[#122] Re: Nauka Blitz Basic

@juen, post #121

; AGA copperbars by Coagulus (EAB)
; modified by Cylon (EAB)
; chg: added ecs support ( quick and dirty 😛  )

DEFTYPE.w

InitPalette 0,256

BitMap 0,320,256,1  ;just 1 bplane needed! saves chipmem!

Dim bar(32)    ;saturation value (0-255) of bar y line
Dim bary(3)    ; 1-red 2-green 3-blue
Dim baryt(3)
Dim barydir(3)

;we create bars of 32pixl height:

If CheckAGA Then fact.w=16 Else fact.w=1

For a=0 To 15
  bar(a)   = (a*fact)
  bar(a+15)= ((16-a)*fact)
Next

baryt(0)=-3
baryt(2)=3
barydir(0)=1
barydir(1)=1
barydir(2)=1

VWait 100    ;two seconds is enough before takin' the machine over

BLITZ

;SpriteMode 2 ;not needed.

;1bitplane 24bit(256,256,256) aga coplist
;again: we use the copper only, so 1 bplane is enough.
InitCopList 0,34,256,$10000|$01|$10|$400,8,1,-4
CreateDisplay 0

DisplayPalette 0,0
DisplayBitMap 0,0

Repeat
  VWait
  DisplayRainbow 0,0,0

  InitPalette0,256    ;256 cols eq 256 lines vertical

  For a=0 To 2
    bary(a) +baryt(a)
    baryt(a)+barydir(a)
    If QAbs(baryt(a)) = 13 Then barydir(a)=0-barydir(a)
  Next

  If CheckAGA
    For a=0 To 31
      AGAPalRGB 0,32+a+bary(0),bar(a),0,0
      AGAPalRGB 0,32+a+bary(1),0,bar(a),0
      AGAPalRGB 0,32+a+bary(2),0,0,bar(a)
    Next
  Else
    For a=0 To 31
      PalRGB 0,32+a+bary(0),bar(a),0,0
      PalRGB 0,32+a+bary(1),0,bar(a),0
      PalRGB 0,32+a+bary(2),0,0,bar(a)
    Next
  EndIf
Until Joyb(0) OR Joyb(1)

QAMIGA
VWait50

End

 CloseEd
;eof


Oto cały kod który dostałem z EAB. Skompilowałem go i on również się wiesza. Coplista jest tu z 1 bitplanem i 1 kolorem.
[#123] Re: Nauka Blitz Basic

@tukinem, post #122

PalRGB 0,32+a+bary(0),bar(a),0,0
PalRGB 0,32+a+bary(1),0,bar(a),0
PalRGB 0,32+a+bary(2),0,0,bar(a)

manual:
PalRGB Palette#,Colour Register,Red,Green,Blue
PalRGB allows you to set an individual colour register within a palette object.
Unless an RGB has also been executed, the actual colour ch

skoro ekran ma dwa kolory. to drugi argument tej komendy nie ma sensu w tym przykladzie. dostepne wartosci to 0 lub 1..
[#124] Re: Nauka Blitz Basic

@juen, post #123

Programując rainbowa używasz PalRGB, ale nie przypisujesz wtedy wartości do palety kolorów, a do kolejnych linii na ekranie.

Wtedy masz:
PalRGB paleta_,nr_linii_ekranu,$R,$G,$B

BitMap 0,320,256,1; tworzymy bitmape z jednym bitplanem
InitPalette 0,1; tworzymy palete dla ekranu
PalRGB 0,0,$0,$0,$0; przypisujemy kolor czarny dla koloru nr 0

InitCoplist 0,34,$1,8,1,-1; -1 to wiadomosc ze bedzie tworzony rainbow
CreateDisplay 0
DisplayPalette 0,0
DisplayBitMap 0,0
PalRGB 1,100,15,15,15; będziesz mieć w 100 linii kolor biały
DisplayRainbow 0,0,1; jako rainbow z paleta "linii ekranu" nr 1


Po to przy InitCoplist na końcu przy parametrze CustomCop zamiast 0 jest ujemna liczba.

Ostatnia aktualizacja: 08.10.2022 20:03:00 przez tukinem
[#125] Re: Nauka Blitz Basic

@tukinem, post #124

Ok to teraz rozumiem. Ten sposób używania coprocesora jest strasznie dziwaczny i mało efektywny..

poddaję sie:(

Ostatnia aktualizacja: 08.10.2022 20:07:06 przez juen
[#126] Re: Nauka Blitz Basic

@juen, post #125

Aż strach pomyśleć jak się programuje coppera do różnych przesunięć, przybliżeń i innych wariactw...
1
[#127] Re: Nauka Blitz Basic

@c64portal, post #110

Jest źródło palettelib w katalogu developers. Pobieżnym okiem wygląda na to, że agamode dla palet jest włączane przy testowaniu wersji kickstartu, czyli jeśli jest v39 to automatycznie uznawane jest, że AGA jest obecne.
[#128] Re: Nauka Blitz Basic

@tukinem, post #124

O ile się orientuję to InitPalette 0,1 definiuje paletę o numerze 0 z jednym kolorem. Później jest PalRGB 1,100,15,15,15 czyli o ile się nie mylę zdefiniowanie koloru nr 100 w palecie nr 1 na biały. Czy nie powinno być najpierw InitPalette 1,256?
No a dalej DisplayRainbow 0 (ekran?),0(coplista?),1 (paleta jak sądzę, ta wczesniej nie inicjowana)
[#129] Re: Nauka Blitz Basic

@pisklak, post #128

Palety dla rainbowa nie trzeba inicjalizować, czyli InitPaltte #NR_PALETY_RAINBOWA,256 jest niepotrzebne.
[#130] Re: Nauka Blitz Basic

@c64portal, post #110

Ktoś odpisał na EAB, ale nie bardzo rozumiem tą odpowiedź...
[#131] Re: Nauka Blitz Basic

@tukinem, post #130

napisal, ze w wersji v33 graphics library nie pozwala na ustawienie koloru powyzej indeksu 32, bez wzgledu na to, jak wielka "mape kolorow"(nie wiem co to, moze chodzi o ustawienie palety) zadeklarowano.
Os (czyli pewnie system) przycina indeksy kolorow do wartosci 32 ale nie pokazuje bledow jesli zakres zostanie przekroczony, jedynie zwracajac wartosc -1 (gdzie , w czym?).




A moim zdaniem tu jest blad, bo indeksy kolorow OCS/ECS maja od 0-31, czyli mowa o wartosci 31 a nie 32.
[#132] Re: Nauka Blitz Basic

@selur, post #131

Czyli jeśli chcę użyć rainbowa pod kick 1.3, to tylko w Slice. Display odpada...
[#133] Re: Nauka Blitz Basic

@tukinem, post #132

Ja to zrozumialem tak, ze gdzies uzywasz wartosci wiekszej niz 31 lub 32, i przez to jest problem. Ale nie znam sie na BB.
[#134] Re: Nauka Blitz Basic

@tukinem, post #132

Raczej możesz ale musisz po prostu nie wychodzić poza zakres 31.
Ja tak to zrozumiałem.
Inna sprawa to że tryb Blitz to o ile sie nie mylę jest coś w stylu trybu niesystemowego, gdzie wszystkie procedury są wywoływane raczej przez display.library po zatrzymaniu OSa. Wiec jeśli tak jest to winę za zwis ponosić będzie właśnie display.lib BlitzBasica.


Ostatnia aktualizacja: 11.10.2022 07:34:39 przez pisklak
[#135] Re: Nauka Blitz Basic

@tukinem, post #132

A może spróbuj próbnie ustawić taką malutką tęczę na 31 'kolorów' i zobacz czy pójdzie na 1.3 i czy to właśnie to jest problemem
[#136] Re: Nauka Blitz Basic

@tukinem, post #132

nigdy nie uzywalem rainbow-a i nie moge sprawdzic faktycznego zachowania pod kickiem 1.3 bo mam tylko trojke na emulatorze...

kilka obserwacji (raptem dwie :) )

1.
tworzysz copliste bez flagi #agacolors ($10000) pomimo, ze probujesz wyswietlic 256 kolorow na ekranie
zauwaz ze w przykladzie z EAB ta flaga tam jest
no i w manualu napisali:
The #agacolors flag must ALWAYS be set when more than 32 colours are in use or
when 24 bit color definition is required.


2.
ale.... w manualu tez napisali :) :
the new display library is also semi-compatible
with pre-AGA Amigas. CopLists can be created on ECS Amigas, however none of the AGA-specific flags
(i.e. super high-resolution or 128/256 colours), nor any of the AGA-specific commands may be used on
pre-AGA Amigas. You have been warned!


nie wiem jak sie ma kick 1.3 do AGA - nie moja bajka , hehe, ale moze poprostu jedno wyklucza drugie?
(dlatego przyklad z EAB tez nie dziala na 1.3 - brak kompatybilnosci ?) i dla rainbow pod 1.3 zostaje slice...

edit
aaaa i jeszce napisali:
The INITCOPLIST statement can also be used to create non-AGA displays, however only low-resolution
sprites, single fetch mode, and a maximum of 64 colours are allowed:


Ostatnia aktualizacja: 11.10.2022 09:24:55 przez pch
[#137] Re: Nauka Blitz Basic

@pch, post #136

Zobacz czy masz debugger wlaczony - moze pomoc (odpowiedz na EAB od osoby co dalej rozwija blitza)
[#138] Re: Nauka Blitz Basic

@mastaszek, post #135

spróbuj próbnie ustawić taką malutką tęczę na 31 'kolorów' i zobacz czy pójdzie na 1.3 i czy to właśnie to jest problemem

pójdzie bo sprawdziłem to właśnie wczoraj. tylko tęcza będzie mała - na 31 kolorów.
To co odpowiedzieli mi na EAB oznacza że ta funkcji PalRGB korzysta pod spodem z jakiejś funkcji w kickstarcie - i tak jest i koniec. Ale jak dla mnie to jest po prostu słabe bo wprowadza właśnie ograniczenie na kicku 1.3 do 32 kolorów co teoretycznie uniemożliwia użycie DisplayRainbow.
[#139] Re: Nauka Blitz Basic

@tukinem, post #122

W tzw międzyczasie - Tęczę na OCS można zrobić tak:
#COP=0
#COLOR=0

WBStartup

BitMap 0,320,256,1
InitPalette 0,2

BLITZ
InitCopList #COP, 34,256,$1,8,2,-1
CreateDisplay 0
DisplayPalette 0,0
DisplayBitMap 0,0
Use BitMap 0

For a=0 To 254
  DisplayRGB #COP, #COLOR, a, a/16, a/16 ,a/16
Next a

DisplayRGB #COP, #COLOR, 254, 8,0,0 ; czerwone na koniec

Repeat
Until RawStatus($45)
End

Sprawdziłem. Działa na kicku 1.3
[#140] Re: Nauka Blitz Basic

@c64portal, post #138

A nie mozna paru tecz 32 kolorowych na jednym ekranie wyswietlic? Albo dac rozpoznanie kicku, i bylaby lepsza tecza na kicku 3.0+? W koncu by ludzie z kick 1.3 zaczeli kupowac kick 3.0+ jakby zobaczyli jaka to super tecza jest. A nie tylko jeden Magazyn, ktory potrzebuje kicka 3.0+.
1
[#141] Re: Nauka Blitz Basic

@Don_Adan, post #140

A nie mozna paru tecz 32 kolorowych na jednym ekranie wyswietlic?

można. Trochę upierdliwe będzie (z różnych powodów) ale da się.
[#142] Re: Nauka Blitz Basic

@c64portal, post #139

No BB nie przestaje mnie zadziwiać
DisplayRGB zmienia color w coperliscie 0, palecie 0 (tej inicjowanej 2 kolorowej, nie powinno być InitPalette #COLOR,2?), o numerze a i odpowiednich wartościach składowych koloru.
Oczywiście pomimo tego że zainicjowana paleta jest dwu kolorowa to jedziemy z pełnymi 256 kolorami Ale to pewnie dlatego że jak zagaduję podczas inicjowania coplisty przez InitCopList jest tam zostawione miejsce na 256 wpisów i dlatego DisplayRGB może sobie radośnie jechać dalej

Ale super że ten kod działa na 1.3 OK
[#143] Re: Nauka Blitz Basic

@pisklak, post #142

nie powinno być InitPalette #COLOR,2

Tak powinno tak być, ale to z haszem #COP, #COLOR to są tylko stałe (constant) aby kod był czytelniejszy.
Cały ten mój przykład powyżej tak na dobrą sprawę nie wymaga żadnej palety ani bitmapy (dostosowałem go do przykładu tukinem'a. Mogło by to minimalistycznie nawet wyglądać tak:

#COP=0
#COLOR=0

WBStartup
BLITZ
InitCopList #COP, 34,256,$1,8,2,-1
CreateDisplay 0
Use BitMap 0
For a=0 To 254
  DisplayRGB #COP, #COLOR, a, a/16, a/16 ,a/16
Next a
DisplayRGB #COP, #COLOR, 254, 8,0,0 ; czerwone na koniec

Repeat
Until RawStatus($45)
End

bez żadnej bitmapy, ale na ekranie będą śmieci + nasze kolory

2 kolorowa paleta nie ma związku z i tą ilością 256 kolorów na ekranie (tutaj u mnie jednak mniej ale faktycznie nawet do 256 kolorowych lini można by dodać). Efekt działania tego programu to podstawowa funkcjonalność Amigowego Coppera. Każdy kurs programowania na Amidze (np od Photona/Scoopex na YT - Polecam) zaczyna się od czegoś takiego. Nakazujemy Copperowi co linie zmienić kolor - na jaki nam się żywnie podoba a nie na kolor z ustalonej palety. Magia Coppera:)
[#144] Re: Nauka Blitz Basic

@c64portal, post #143

Sorki, że tak późno odpisuję. Musiałem noc odespać a później potestować to wszystko.

Już wiem, co było źle.

Do rejestrów kolorów mam nie używać PalRGB, tylko DisplayRGB !!! Nie wiedziałem o istnieniu tej komendy.

Więc czemu ktoś pisząc ruchome rainbowy użył PalRGB, tymbardziej że to koder z EAB? W takim razie Display Rainbow jest niepotrzebne.

Parametr CustomCop przy tworzeniu Coplisty musi być i tak ujemny.
[#145] Re: Nauka Blitz Basic

@tukinem, post #144

Tu na obrazku widać, jak linie poziome nie są równe. To wina niedoskonałości coppera, czy emulatora? A może dlatego, że ekran ma mieć 320 pix, a tu jest więcej i zaczyna rysować wcześniej już pod koniec poprzedniej linii?



Tu taka mała animacja pojedynczych linii coppera z tego obrazka :)
[#146] Re: Nauka Blitz Basic

@tukinem, post #145

Znowu potestowałem i pozbyłem się tego artefaktu.

Przy copliście trzeba ustawić flagę na AGAPal, czyli InitCoplist 0,#POS_Y,#EKR_Y,$10001,8,2,-4

CustomCop trzeba ustawić na -4, bo braknie miejsca na edycję linii ekranu

Trzeba użyć komendy CheckAGA i w razie występowania układu AGA mnożyć wielkości kolorów*16, czyli

If CheckAGA
  aga=16
Else
  aga=1
Endif

...

DisplayRGB 0,0,#NR_LINII,$F*aga,$C*aga,8*aga
VWait



Po testach stwierdzam błąd jedynie przy konfigu, który nie jest realny (kick 1.3+AGA). Wtedy kolory wariują.

Tu jest ADF z kodem "odświeżonym".
[#147] Re: Nauka Blitz Basic

@c64portal, post #143

No ja z grubsza wiem jak działa Copper. Chodziło mi o to że z punktu widzenia kodera ASM/C/E to "podejscie do allokacji/definicji" pewnych rzeczy jest dla mnie powiedzmy "lekko dziwne".
No ale to tylko dlatego że ja nie znam BB. A kluczową linią w tym kodzie jest ta z InitCopList - a zwłaszcza te magiczne 256 i chyba -1

Ostatnia aktualizacja: 11.10.2022 19:48:06 przez pisklak
[#148] Re: Nauka Blitz Basic

@pisklak, post #147

44 to pozycja początkowa ekranu (w pionie)
256 to rozmiar pionowy ekranu
-1, czy -4 to CustomCop, który zwykle jest jako 0 jeśli ręcznie coplista nie jest ustawiana.
[#149] Re: Nauka Blitz Basic

@tukinem, post #148

Te 256 to chyba nie jest tyle rozmiar ekranu ile ilość możliwych wpisów do coplisty. Sprawdź sobie wpisując tam np 1024 szeroki uśmiech
No przynajmniej ja tak to rozumiem
[#150] Re: Nauka Blitz Basic

@pisklak, post #149

tukinem ma rację. To jest wysokość ekranu. Poza tym, panowie… w sieci jest dokumentacja. Można doczytać a nie zgadywać ;)
1
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem