Programowanie: Definiowanie niestandardowych trybów graficznych
From Atariki
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)