Programowanie: Definiowanie niestandardowych trybów graficznych

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 07:31, 28 cze 2008
Xxl (Dyskusja | wkład)

← Previous diff
Wersja z dnia 20:51, 28 cze 2008
Xxl (Dyskusja | wkład)
(apple2)
Next diff →
Linia 60: Linia 60:
Podczas wygaszania pionowego należy zapisać rejestr "ch_cnt+1" wartością "<char". W tym przypadku dane grafiki do wyświetlenia znajdują się pod adresem $4000. Definiowanie trybu "MODE 5" polega na wpisaniu w DL zamiast $42 wartości $45 oraz poddaniu danych obrazu odpowiedniej [http://atariki.krap.pl/index.php/Programowanie:_Konwersja_kolorowej_grafiki_z_uk%C5%82adu_6845 konwersji]. Podczas wygaszania pionowego należy zapisać rejestr "ch_cnt+1" wartością "<char". W tym przypadku dane grafiki do wyświetlenia znajdują się pod adresem $4000. Definiowanie trybu "MODE 5" polega na wpisaniu w DL zamiast $42 wartości $45 oraz poddaniu danych obrazu odpowiedniej [http://atariki.krap.pl/index.php/Programowanie:_Konwersja_kolorowej_grafiki_z_uk%C5%82adu_6845 konwersji].
 +
 +=== Definiowanie trybu graficznego Apple II ===
 +
 +Należy pamiętać, że Apple II stosuje odwrotną kolejność bitów w danych do wyświetlenia oraz nie wyświetla najstarszego bitu danych przez co rozdzielczość ekranu Apple wynosi 280 punktów przy 40 pobranych bajtach.
 +
 +<pre>
 +mode equ $f
 +
 +antic dta $70,$70,$70
 +
 + :8 dta $40+mode,a(apple_ekr+#*$80),
 + $40+mode,a(apple_ekr+$400+#*$80),
 + $40+mode,a(apple_ekr+$800+#*$80),
 + $40+mode,a(apple_ekr+$c00+#*$80),
 + $40+mode,a(apple_ekr+$1000+#*$80),
 + $40+mode,a(apple_ekr+$1400+#*$80),
 + $40+mode,a(apple_ekr+$1800+#*$80),
 + $40+mode,a(apple_ekr+$1c00+#*$80)
 +
 + :8 dta $40+mode,a(apple_ekr+$28+#*$80),
 + $40+mode,a(apple_ekr+$400+$28+#*$80),
 + $40+mode,a(apple_ekr+$800+$28+#*$80),
 + $40+mode,a(apple_ekr+$c00+$28+#*$80),
 + $40+mode,a(apple_ekr+$1000+$28+#*$80),
 + $40+mode,a(apple_ekr+$1400+$28+#*$80),
 + $40+mode,a(apple_ekr+$1800+$28+#*$80),
 + $40+mode,a(apple_ekr+$1c00+$28+#*$80)
 +
 + :8 dta $40+mode,a(apple_ekr+$50+#*$80),
 + $40+mode,a(apple_ekr+$400+$50+#*$80),
 + $40+mode,a(apple_ekr+$800+$50+#*$80),
 + $40+mode,a(apple_ekr+$c00+$50+#*$80),
 + $40+mode,a(apple_ekr+$1000+$50+#*$80),
 + $40+mode,a(apple_ekr+$1400+$50+#*$80),
 + $40+mode,a(apple_ekr+$1800+$50+#*$80),
 + $40+mode,a(apple_ekr+$1c00+$50+#*$80)
 +
 + dta $41,a(antic)
 +</pre>
[[Kategoria:Niezbędnik kodera]] [[Kategoria:Niezbędnik kodera]]

Wersja z dnia 20:51, 28 cze 2008

Na stronie znajdują się opisy uzyskania na Atari niestandardowych trybów graficznych.

Spis treści


Definiowanie trybu graficznego ZX Spectrum

Należy zdefiniować obraz wąski (32 bajty) z następującą DL:

zx_bitmap	= $4000		; pamięć obrazu ZX Spectrum
zx_bitmap1	= $4800
zx_bitmap2	= $5000
zx_colormap	= $5800		; pamięć koloru

antic		dta $70,$70,$70

		:64 dta $4f,a(zx_bitmap+(#/8)*32+(#&7)*$100)
		:64 dta $4f,a(zx_bitmap1+(#/8)*32+(#&7)*$100)
		:64 dta $4f,a(zx_bitmap2+(#/8)*32+(#&7)*$100)

		dta b($41),a(antic)

Definiowanie trybu graficznego układu 6845

Przykładowe uruchomienie trybu graficznego "MODE 4" komputera Acorn Electron i BBC Micro na wąskim (32 bajty) obrazie.

Display List:

antic           dta $70,$70,$70+$80

                :5 dta $42,a(ekr_6845),$2,$2,$2+$80

                dta $41,a(antic)

Pamięć ekranu:

                ldy #0
_1              tya
                sta ekr_6845,y
                iny
                bpl _1
                ...

ekr_6845        equ *

Przerwania DLI:

                sta _6502_a
ch_cnt          lda char
                inc ch_cnt+1
                sta wsync
                sta chbase
                lda _6502_a
                rti 
char            dta b($40),b($44),b($48),b($4c),b($50),b($54) 

Podczas wygaszania pionowego należy zapisać rejestr "ch_cnt+1" wartością "<char". W tym przypadku dane grafiki do wyświetlenia znajdują się pod adresem $4000. Definiowanie trybu "MODE 5" polega na wpisaniu w DL zamiast $42 wartości $45 oraz poddaniu danych obrazu odpowiedniej konwersji.

Definiowanie trybu graficznego Apple II

Należy pamiętać, że Apple II stosuje odwrotną kolejność bitów w danych do wyświetlenia oraz nie wyświetla najstarszego bitu danych przez co rozdzielczość ekranu Apple wynosi 280 punktów przy 40 pobranych bajtach.

mode      equ $f

antic     dta $70,$70,$70

      :8  dta $40+mode,a(apple_ekr+#*$80),
              $40+mode,a(apple_ekr+$400+#*$80),
              $40+mode,a(apple_ekr+$800+#*$80),
              $40+mode,a(apple_ekr+$c00+#*$80),
              $40+mode,a(apple_ekr+$1000+#*$80),
              $40+mode,a(apple_ekr+$1400+#*$80),
              $40+mode,a(apple_ekr+$1800+#*$80),
              $40+mode,a(apple_ekr+$1c00+#*$80)

      :8  dta $40+mode,a(apple_ekr+$28+#*$80),
              $40+mode,a(apple_ekr+$400+$28+#*$80),
              $40+mode,a(apple_ekr+$800+$28+#*$80),
              $40+mode,a(apple_ekr+$c00+$28+#*$80),
              $40+mode,a(apple_ekr+$1000+$28+#*$80),
              $40+mode,a(apple_ekr+$1400+$28+#*$80),
              $40+mode,a(apple_ekr+$1800+$28+#*$80),
              $40+mode,a(apple_ekr+$1c00+$28+#*$80)

      :8  dta $40+mode,a(apple_ekr+$50+#*$80),
              $40+mode,a(apple_ekr+$400+$50+#*$80),
              $40+mode,a(apple_ekr+$800+$50+#*$80),
              $40+mode,a(apple_ekr+$c00+$50+#*$80),
              $40+mode,a(apple_ekr+$1000+$50+#*$80),
              $40+mode,a(apple_ekr+$1400+$50+#*$80),
              $40+mode,a(apple_ekr+$1800+$50+#*$80),
              $40+mode,a(apple_ekr+$1c00+$50+#*$80)

          dta $41,a(antic)
Personal tools