TBXL: Wczytanie obrazka
From Atariki
(Różnice między wersjami)
Wersja z dnia 15:54, 26 maj 2010 Sikor (Dyskusja | wkład) ← Previous diff |
Aktualna wersja Sikor (Dyskusja | wkład) (→Zobacz też - poprawa linku) |
||
Linia 6: | Linia 6: | ||
100 proc OBRAZEK: REM w TBXL stosujemy procedury | 100 proc OBRAZEK: REM w TBXL stosujemy procedury | ||
110 OPEN #1,4,0,"D:NAZWA.EXT":REM pod nazwa.ext podstawiamy odpowiednią nazwę obrazka. Open otwiera kanał IOCB | 110 OPEN #1,4,0,"D:NAZWA.EXT":REM pod nazwa.ext podstawiamy odpowiednią nazwę obrazka. Open otwiera kanał IOCB | ||
- | 120 BGET #1,$adres_obrazka,ilość_bajtow:REM adres obrazka - gdzie wczytujemy dane, na przykład $6000, ilość bajtów - wielkość obrazka w bajtach, odpowiednio 6400 lub 7680, ewntualnie plus 4 bajty dla obrazka MIC | + | 120 BGET #1,$adres_obrazka,ilość_bajtow:REM adres obrazka - gdzie wczytujemy dane, na przykład $6000, |
+ | ilość bajtów - wielkość obrazka w bajtach, odpowiednio 6400 lub 7680, ewentualnie plus 4 bajty dla obrazka MIC | ||
130 CLOSE #1:REM pamiętamy o zamknięciu kanału IOCB | 130 CLOSE #1:REM pamiętamy o zamknięciu kanału IOCB | ||
140 GRAPHICS n:REM używamy odpowiedniego trybu graficznego, na przykład 24 (8+16) | 140 GRAPHICS n:REM używamy odpowiedniego trybu graficznego, na przykład 24 (8+16) | ||
- | 150 MOVE $adres_obrazka,dpeek(88),wielkość_obrazka:REM tu wyświetlamy | + | 150 MOVE $adres_obrazka,DPEEK(88),wielkość_obrazka:REM tu wyświetlamy |
160 ENDPROC:REM procedura powinna mieć swoje zakończenie | 160 ENDPROC:REM procedura powinna mieć swoje zakończenie | ||
</pre> | </pre> | ||
+ | |||
+ | '''UWAGA:''' przy wybieraniu wartości "adresu_obrazka" trzeba pilnować, żeby znalazł się on między wartością wskazywaną przez wektor APPMHI ($0E-$0F), a wartością wskazywaną przez wektor MEMTOP ($02E5-$02E6). Dodatkową komplikacją jest fakt, że APPMHI zmienia się w trakcie działania programu (zwiększa go np. wejście do pętli FOR/NEXT, albo wykonanie GOSUB, zmniejsza - wyjście z pętli albo wykonanie RETURN). | ||
* Wczytanie i wyświetlenie danych jako zmienna tekstowa, sposób stosowany przez [[Larek|Larka]] | * Wczytanie i wyświetlenie danych jako zmienna tekstowa, sposób stosowany przez [[Larek|Larka]] | ||
<pre> | <pre> | ||
- | 100 DIM OBRAZ$(6400) : REM -> dla 160x160 lub 7680 dla 160x192 | + | 100 DIM OBRAZ$(6400):OBRAZ$(6400)="#": REM -> dla 160x160 lub 7680 dla 160x192 |
110 OPEN #1,4,0,"D:nazwa_obrazka.MIC" | 110 OPEN #1,4,0,"D:nazwa_obrazka.MIC" | ||
120 BGET #1,ADR(OBRAZ$),6400 :REM -> dla 160x160 lub 7680 dla 160x192 | 120 BGET #1,ADR(OBRAZ$),6400 :REM -> dla 160x160 lub 7680 dla 160x192 | ||
Linia 22: | Linia 25: | ||
</pre> | </pre> | ||
- | * Dla obrazów typu MIC mamy dodatkowe 4 bajty (przed danymi obrazu lub za nimi), należy wtedy pamiętać o odpowiednim ustawieniu adresu obrazu. Te cztery bajty zawierają rejestry kolorów, które także możemy wykorzystać w swoich programach. | + | * Dla obrazów typu MIC mamy dodatkowe 4 bajty (przed danymi obrazu lub za nimi), należy wtedy pamiętać o odpowiednim ustawieniu adresu obrazu. Te cztery bajty zawierają wartości czterech rejestrów kolorów (od COLPFS1 do COLBAKS). |
== Uwagi dodatkowe == | == Uwagi dodatkowe == | ||
- | * Korzystając z metody stosowanej przez Sikora, wpisując jako adres_obrazka dpeek(88) możemy obrazek załadować bezpośrednio na ekran. | + | * Korzystając z metody stosowanej przez Sikora, wpisując jako adres_obrazka DPEEK(88) możemy obrazek załadować bezpośrednio na ekran. |
== Zobacz też == | == Zobacz też == |
Aktualna wersja
Poniżej znajdują się przykłady dla wczytania i wyświetlenia standardowego obrazu dla Atari dla trybów graficznych. Dane obrazu mają zazwyczaj 6400 (z oknem tekstowym) lub 7680 (bez okna) bajtów.
- Wczytanie i wyświetlenie danych bezpośrednio do pamięci, sposób stosowany zazwyczaj przez Sikora
100 proc OBRAZEK: REM w TBXL stosujemy procedury 110 OPEN #1,4,0,"D:NAZWA.EXT":REM pod nazwa.ext podstawiamy odpowiednią nazwę obrazka. Open otwiera kanał IOCB 120 BGET #1,$adres_obrazka,ilość_bajtow:REM adres obrazka - gdzie wczytujemy dane, na przykład $6000, ilość bajtów - wielkość obrazka w bajtach, odpowiednio 6400 lub 7680, ewentualnie plus 4 bajty dla obrazka MIC 130 CLOSE #1:REM pamiętamy o zamknięciu kanału IOCB 140 GRAPHICS n:REM używamy odpowiedniego trybu graficznego, na przykład 24 (8+16) 150 MOVE $adres_obrazka,DPEEK(88),wielkość_obrazka:REM tu wyświetlamy 160 ENDPROC:REM procedura powinna mieć swoje zakończenie
UWAGA: przy wybieraniu wartości "adresu_obrazka" trzeba pilnować, żeby znalazł się on między wartością wskazywaną przez wektor APPMHI ($0E-$0F), a wartością wskazywaną przez wektor MEMTOP ($02E5-$02E6). Dodatkową komplikacją jest fakt, że APPMHI zmienia się w trakcie działania programu (zwiększa go np. wejście do pętli FOR/NEXT, albo wykonanie GOSUB, zmniejsza - wyjście z pętli albo wykonanie RETURN).
- Wczytanie i wyświetlenie danych jako zmienna tekstowa, sposób stosowany przez Larka
100 DIM OBRAZ$(6400):OBRAZ$(6400)="#": REM -> dla 160x160 lub 7680 dla 160x192 110 OPEN #1,4,0,"D:nazwa_obrazka.MIC" 120 BGET #1,ADR(OBRAZ$),6400 :REM -> dla 160x160 lub 7680 dla 160x192 130 CLOSE #1 140 MOVE ADR(OBRAZ$),DPEEK(DPEEK(560)+4),6400 :REM -> dla 160x160 lub 7680 dla 160x192, wyświetlenie
- Dla obrazów typu MIC mamy dodatkowe 4 bajty (przed danymi obrazu lub za nimi), należy wtedy pamiętać o odpowiednim ustawieniu adresu obrazu. Te cztery bajty zawierają wartości czterech rejestrów kolorów (od COLPFS1 do COLBAKS).
[Edytuj]
Uwagi dodatkowe
- Korzystając z metody stosowanej przez Sikora, wpisując jako adres_obrazka DPEEK(88) możemy obrazek załadować bezpośrednio na ekran.
[Edytuj]