1

Temat: S2: zamiennik dla systemowego urządzenia "Screen"

Witam,

Projektuje zamiennik dla urzadzenia S:, co potrafi S2:

1. tworzenia trybow o definiowanej wysokosci,
2. dowolnej szerokosci narrow/normal/wide
3. dla podstawowych trybow moziwosc dodania modyfikatora trybu GTIA
4. tworzenie wielu okien graficznych (mozliwosc otwarcia tylu ile jest kanalow CIO)
5. wyswietlanie wielu okien graficznych jednoczesnie
6. 1-bitowa mapa koloru z definiowana wielkoscia komorki (w pionie)
7. funkcje punkt,linia,wypelnienie,tekst (na ekranie graficznym)

aby to zrealizowac dodalem takze:
- zarzadzanie pamiecia - alokacja i zwalnianie pamieci (nie tylko dla ekranow)
- zarzadznie wyswietlaniem - mozliwosc dodawania wlasnych ekranow, komponowanie wyswietlania, rejestracja wlasnych przerwan DLI do konkretnego ekranu


mozna uzywac nawet w Basicu z tym, ze Basic fun. graficzne kieruje do #6 wiec... najlepiej uzywac XIO ;-)


poniezej filmiki z postepow:

http://atari.pl/hsc/ad.php?i=1.

2

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

Świetnie to wygląda.
Mam kilka pytań odnośnie funkcji piszącej tekst na ekranie w trybie graficznym.
Jak wiadomo systemowe generatory znaków przygotowane są dla trybów hires (1 bit na piksel). Czy:
1. Można pisać dowolny tekst używając takiego generatora (jak są interpretowane znaki w inverse video)?
2. Czy mając własny generator znaków zaprojektowany dla trybu multicolor (2 bity na piksel) można go użyć do rysowania fontów w trybie graficznym który pozwala na malowanie pikseli w kilku kolorach (np. czcionka dla trybu 12 OS rysowana w trybie 15 OS lub 7 OS)?
3. Czy można pisać tekst obrócony o 90, 180 i 270 stopni (a może 45, 135, 225 i 315)?
4. Czy tekst można pozycjonować z dokładnością do piksela czy do bajtu?
5. Czy w trybach GTIA tekst jest czytelny czy trzeba sobie skonstruować dla niego osobny generator znaków (4 bity na piksel)?

Edit: Czyli właściwie pytania 1, 2 i 5 sprowadzają się do kwestii mapowania pikseli z generatora znaków na piksele trybu graficznego :)

Ostatnio edytowany przez mono (2019-09-02 00:31:35)

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

3

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

draw/fill/tekst chce wziac zewnetrzne procki... http://www.atari.org.pl/forum/viewtopic … 13#p253513
jak nie znajde to tekst zrobie tak:
-generator pod tekst w trybie graficznym ma 256 znakow jak zdefiniujesz inverse to bedzie (user definiuje a jesli nie zdefiniuje to bedzie efekt taki jak w gr.12) - ale jest tez mozliwosc ze inverse bedziesz mial jak wlaczysz 1bit colormap i znaki +128 beda mialy kolormape...
- bez obrotow, moze raczej powinienem to nazwac tiles a nie tekst ;-) tym bardziej, ze praktycznie nie ma ograniczenia do tych 256 znakow - kazde wywolanie moze miec inny zestaw.
- pozycjonowanie do bajtu (ma byc szybkie)

http://atari.pl/hsc/ad.php?i=1.

4

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

Czyli przepisujesz bajt z generatora do pamięci ekranu. Czyli generator ma mieć konstrukcję odpowiednią dla trybu (1bpp - singlecolor, 2bpp - multicolor, 4bpp - GTIA). W sumie to ideowo zgadza się to z tym co Atari chciało a czego nie, bo tekst w GR.12 też niespecjalnie wygląda z generatorami systemowymi :)
Skoro tiles, to może pomyśl o odbiciach w poziomie (tablica) i pionie (procedura). Twórcom BASIC-owych gier mogłoby to nieco uprzyjemnić robotę.

Edit: A pozycjonowanie co do piksela robienie sprajtów softwareowych.

Edit 2: A jeszcze z maskowaniem... Paaaanie. Tzn. z przezroczystością.

Ostatnio edytowany przez mono (2019-09-02 12:02:43)

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

5

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

hehehe - softsprity :-) moznaby zrobic rozszerzone get tile, put tile i ogarnac sprity :-)

http://atari.pl/hsc/ad.php?i=1.

6

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

Jeśli byś się za te sprajty brał to mam następującą sugestię:

Zazwyczaj jeden z pikseli (zazwyczaj 0) traktowany jest jako kolor przezroczysty - reszta to piksele definicji sprajta. W trybach 1bpp taki sprajt jest szybko nakładany przez OR, w innych trzeba zamaskować. No ale mając np. tryb 4-kolorowy to para %00 jest zazwyczaj kolorem ramki, która często jest kolorem czarnym. Skutek jest taki, że zazwyczaj taka gra ma tło czarne. Gdybyś umożliwił przy nakładaniu sprajta wybór który kolor z definicji jest traktowany jako przezroczysty, to można byłoby wykorzystać kolor %00 jako zwykły piksel sprajta - dalej jeden sprajt miałby 3 kolory, ale jeden korzystałby z pikseli %01, %10, %11 a inny np. z %01, %10 i %00 a więc można by używać koloru ramki i mieć np. kolorowe tło (tak, jak ma Gorgh w swojej grze z motorem).
Można powiedzieć, że niczym się to nie różni od sytuacji kiedy masz dla sprajta zdefiniowany jego kształt i osobno maskę. Ale wtedy dla każdego sprajta musisz mieć i kształt i maskę. W proponowanej wyżej sytuacji masz tylko definicję sprajta, dzięki czemu zajmuje to mniej pamięci bo nie każdy sprajt musi używać pary %00.

Problem jest tylko taki, że nakładanie takiego sprajta trzeba maskować więc trzeba by mieć 256-bajtowe tablice masek. Dla trybów 1bpp potrzebujesz 2 tablice, dla 2bpp 4 tablice, dla 4bpp 16 tablic.
Można by założyć że sprajty o indeksach $00..$7F mają zawsze piksel %00 przezroczysty, a sprajty $80..$FF piksel %11 przezroczysty. Wtedy trzeba 2 tablice dla 1bpp, 2 tablice dla 2bpp i 2 tablice dla 4bpp.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

7

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

pomysl calkiem fajny, nowatorski. ale... a jak bede chcial sprita z obrysem? i pytania od userow - dlaczego mam utrzymywac tablice gdy nie skorzystam z tilesow i softsptitow?

http://atari.pl/hsc/ad.php?i=1.

8

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

Tak. To wymaga malowania dwóch sprajtów na sobie.
Nie musisz mieć tablic - możesz maskować programowo :P.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

9

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

prawda. przebolalbm szbkosc...

mozesz zaprezentowac procke bez tablic? kolor przezroczysy "10" w zp1 adres kloca, w zp2 adres pamieci ekranu.

Ostatnio edytowany przez xxl (2019-09-03 11:28:42)

http://atari.pl/hsc/ad.php?i=1.

10

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

Powinno być to coś w tej podobie:
1. 1bpp:

tile1bpp:
        lda #%11111111  ;kolor przezroczysty (%1 powielony na wszystkie piksele)

        eor (zp1)       ;z piksela przezroczystego robimy %0

        nop             ;i liczymy maske

        pha             ;maskujemy piksele kloca
        and (zp1)
        sta tmp
        pla             ;maskujemy piksele ekranu
        eor #%11111111
        and (zp2)
        ora tmp         ;i scalamy
        sta (zp2)

2. 2bpp

tile2bpp:
        lda #%10101010  ;kolor przezroczysty (%10 powielony na wszystkie piksele)

        eor (zp1)       ;z piksela przezroczystego robimy %00

        pha             ;i liczymy maske
        and #%01010101
        sta tmp
        pla
        and #%10101010
        lsr
        ora tmp
        sta tmp
        asl
        ora tmp

        pha             ;maskujemy piksele kloca
        and (zp1)
        sta tmp
        pla             ;maskujemy piksele ekranu
        eor #%11111111
        and (zp2)
        ora tmp         ;i scalamy
        sta (zp2)

3. 4bpp

tile4bpp:
        lda #%00010001  ;kolor przezroczysty (%0001 powielony na wszystkie piksele)

        eor (zp1)       ;z piksela przezroczystego robimy %0000

        pha             ;i liczymy maske
        and #%00001111
        seq
        ora #%00001111
        sta tmp
        pla
        and #%11110000
        seq
        ora #%11110000
        ora tmp

        pha             ;maskujemy piksele kloca
        and (zp1)
        sta tmp
        pla             ;maskujemy piksele ekranu
        eor #%11111111
        and (zp2)
        ora tmp         ;i scalamy
        sta (zp2)

Począwszy od "maskujemy piksele kloca" kod jest identyczny. Podobny też jest kod aż do "i liczymy maske". Różny jest kod do liczenia maski stąd najfajniej mieć tę maskę stablicowaną :)

Edit: Oczywiście indeks koloru przezroczystego może być dowolny.

Edit 2: No i zp1 i zp2 możesz używać z dowolnym x czy y bo są nie używane (dlatego nie pisałem pełnego trybu adresowego).

Ostatnio edytowany przez mono (2019-09-04 00:42:16)

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

11

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

dodaje do kompletu E: driver

mozna mieszac grafike i tekst, marinesy prawy/lewy, gora/dol

Ostatnio edytowany przez xxl (2020-12-27 22:21:51)

http://atari.pl/hsc/ad.php?i=1.

12

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

Piękne, sterownik będzie działał po SDX ?

13

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

nie mam SDX, jak SDX jest dobrze napisany to powinien dzialac, z dyskowa wersja raczej dziala:



https://obrazki.elektroda.pl/7093026900_1609130841.jpg

Ostatnio edytowany przez xxl (2020-12-28 05:49:51)

http://atari.pl/hsc/ad.php?i=1.

14

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

To je dobre.

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

15

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

Bardzo fajne. Zaimplementowałeś może pionowy scroll tekstowy za pomocą DL zamiast przepisywać ekran? Nie bardzo wiem jak to samo zrobić z poziomym. Chodzi mi o zgrubny scroll co znak. DL i pamięć ekranu jest wtedy poniżej $8000 co jest nie bardzo z rozszerzeniami Axlon i Rambo :(

Edit: Fonty 4x8 w wersji standard i international są załączone jako osobne pliki w paczce ze sterownikiem RC_GR8 w SDX.

Ostatnio edytowany przez mono (2020-12-28 07:11:44)

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

16

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

Poproszę o testy na real atari albo z emulatorem w realnej grafice, tzn. włączone artefakty.

17

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

Skąd można pobrać ?

18

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

mono napisał/a:

Zaimplementowałeś może pionowy scroll tekstowy za pomocą DL zamiast przepisywać ekran?

nie. musi byc przepisywanie danch poniewaz nie chce scrolla takiego jak jest w standardzie. chce zeby edytor mozna bylo uruchomic w okienku a wtedy scrollowac ma sie tylko zawartosc okienka.

http://atari.pl/hsc/ad.php?i=1.

19

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

no i tak to sie robi ;-)

edytor w okienku ..... w koncu.

Ostatnio edytowany przez xxl (2020-12-31 13:23:19)

http://atari.pl/hsc/ad.php?i=1.

20

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

Świetna robota, skąd można pobrać ?

21

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

za wczesnie na to. poza tym, czerpalem metody programowania z takich programow i gier jak np. Road Race, Bounty Bob, SynFile+ wiec ten handler nie bedzie dzialal z u1mb

---

mozna otworzc edytor w dowolnym miejscu ekranu i nadac mu dowolna wielkosc.

standardowy edytor ma ograniczenie ze nie mozna wprowadzac dlugich linii w Basicu...  tu przklad linii 255 znakowych:

https://obrazki.elektroda.pl/9184357500_1609509590.png

zastanawiam sie czy nie dodac opcji jakich znakow mozna uzywac w E80: ... np. tylko cyfry, znaki alfanumeryczne itp.

Ostatnio edytowany przez xxl (2021-01-01 15:10:37)

http://atari.pl/hsc/ad.php?i=1.

22

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

xxl napisał/a:

wiec ten handler nie bedzie dzialal z u1mb

Wow. Faktycznie powinieneś udać się do lekarza pierwszego kontaktu celem diagnozy :)

ADRES: pin@atari.pl - konto zlikwidowane. Aktualny adres: pin(at)atari8.info

23

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

xxl napisał/a:

wiec ten handler nie bedzie dzialal z u1mb

Podziwiam umiejętności programistyczne. Serio, jestem pod ogromnym wrażeniem. Ale to jest po prostu chore :( I przykre.

Pamięć studenta ma charakter kwantowy - student wie wszystko, ale jednocześnie nic nie pamięta.
- Kilka(naście?) pudełek z klawiszami i światełkami. I jeden Vectrex, żeby nimi wszystkimi rządzić.

24

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

tez tak uwazam, ale czasem tak jest z niedostatecznie przetestowanymi urzdzeniami.

http://atari.pl/hsc/ad.php?i=1.

25

Odp: S2: zamiennik dla systemowego urządzenia "Screen"

A  Road Race, Bounty Bob, SynFile+ nie dzialają z U1M?
Dobry programista poradziłby sobie z "ułomnością"  z U1M...

Zddrowego rozsądku w 2021 roku życzę!

https://systemembedded.eu/
""Ja bardzo przepraszam, ale podejrzenia panów są całkowicie bezpodstawne. Ja niczym nie handluję. Ta pani przyszła do mnie w tym Pancake-u i w nim wychodzi.""
ABBUC Member #319. Preferowana forma kontaktu: email