676

(105 odpowiedzi, napisanych Fabryka - 8bit)

https://www.3eality.com/Public/Releases/RAD/ tu są źródła do Reality Adlib Trackera w wersji 1.0 pod DOS (asm 286) i 2.0 dla windows (c++). Zerknij na procedurę inicjalizacji chipa.

677

(105 odpowiedzi, napisanych Fabryka - 8bit)

O, przepraszam, zapomniałem o tym. No to nie przeprowadzać detekcji :)

678

(105 odpowiedzi, napisanych Fabryka - 8bit)

OPL3 (ymf 262) jest szybki więc delaye, o jakich pisze Toriman są wystarczające. OPL2 (np. ym 3812) jest wolny - tam po wybraniu adresu trzeba odczekać 3.3us, a po zapisie wartości 23us.
Zobacz do rejestrów $104 i $105 - tam konfiguruje się tryb OPL3 (układ domyślnie startuje w OPL2) który wpływa na liczbę algorytmów i ilość kanałów. Kiedy układ działa w trybie OPL2 wtedy masz na dwóch stronach dwa układy OPL2 (chyba, że masz 3812, to wtedy masz jeden OPL2 a górna strona jest nieaktywna).
Dobrze jest też przeprowadzić detekcję chipa - https://www.fit.vutbr.cz/~arnost/opl/op … #appendixB

Edit: literówka

679

(6 odpowiedzi, napisanych Programowanie - 8 bit)

623 czyli $26F to GPRIOR/GTIACTS - rejestr cień dla $D01B czyli PRIOR/GTIACTL: http://atariki.krap.pl/index.php/Rejestry_GTIA#GTIACTL
Konfiguruje on sposób wyświetlania grafiki przez GTIA, łączenie sprajtów w 5-go playera, nakładanie sprajtów oraz ich priorytety.
Nakładanie sprajtów realizowane jest parami:
- COLPM0 OR COLPM1
- COLPM2 OR COLPM3
przy czym nie ma znaczenia czy nakładany jest player z missilem, dwa missile czy dwa playery - nakładanie dotyczy pikseli o podanych kolorach.
W ten sposób w hiresie (GR.8/GR.0/ANTIC3) możesz dostać:
1. COLPF1
2. COLPF2
3. COLPF3 - kiedy włączysz piątego playera (wtedy kolor dla wszystkich missiles brany jest właśnie z COLPF3)
4. COLPM0
5. COLPM1
6. COLPM0 OR COLPM1
7. COLPM2
8. COLPM3
9. COLPM2 OR COLPM3
Możesz ewentualnie doliczyć jeszcze COLBAK czyli kolor ramki.
Możesz też eksperymentować z priorytetem 0 dla sprajtów i być może uzyskasz jeszcze dodatkowe kolory (nie eksperymentowałem z tym więc nic nie powiem).
To są kolory które możesz uzyskać w jednej linii skanningowej bez multiplikowania sprajtów ani zmiany kolorów  w rastrze.
Oczywiście na przerwaniu DLI możesz zmieniać wartości rejestrów kolorów, więc sumarycznie na ekranie możesz uzyskać wszystkie 128 kolorów (a z VBXE lub Sophia nawet 256).

Edit: Jeśli dodatkowo wziąć pod uwagę fakt, że tylko odcień dla zapalonego piksela jest brany z rejestru COLPF1, a kolor piksela jest kolorem tła (taki jaki wynika z nakładania sprajtów), to w linii masz 8*2=16 barw :)

680

(4 odpowiedzi, napisanych Fabryka - 8bit)

@Sukkor_benoth: To jest jakiś gotowy produkt? Możesz podać symbol?

Edit: Ciekawi mnie czy można by go podłączyć po prostu do wyjścia audio z Atari.

681

(11 odpowiedzi, napisanych Sprzęt - 8bit)

Cześć.
Czy "ciche trzaski, szumy i zakłócenia" słyszalne są wyłącznie na lewym kanale? Weź pod uwagę, że POKEY który zajmuje się komunikacją jest używany w Atari do generowania dźwięku. Stąd każdą komunikację przez złącze szeregowe słychać. Inaczej jest np. w C= który ma dźwięk odseparowany od transmisji szeregowej.
Jeśli "ciche trzaski, szumy i zakłócenia" słychać tylko na lewym kanale, to wszystko jest w porządku.
Jeśli faktycznie coś jest źle, to pomocne byłoby jakieś nagranie.

682

(47 odpowiedzi, napisanych Sprzęt - 8bit)

Adresy zestawów w ROM to $E000 i $CC00.

683

(216 odpowiedzi, napisanych Fabryka - 8bit)

To cyklowanie dotyczy pracy CPU w liniach 8..247? Ekler ma cykle dostępu dla odświeżania pamięci DRAM wtedy?

684

(216 odpowiedzi, napisanych Fabryka - 8bit)

Ale tym razem wojna będzie się odbywać na polu SRATARI. Półgębkiem też nadmienię że Eclaire jest zrealizowane w FPGA, a taka implementacja przez niektórych ortodoksów postrzegana jest jako EMULATOR. No, tak czy inaczej takie porównanie mogłoby być ciekawe, a i oczami wyobraźni już widzę epitety jakimi obrzucają się adwersarze. Atarowanie XXI wieku najwyższy czas zacząć :)

Edit: Urwało mi posta.

685

(198 odpowiedzi, napisanych Zloty)

A kiedy jest ten Black Friday i Cyber Monday cokolwiek by to nie było?

Mała ciekawostka odnośnie DATA.
Atari BASIC wewnętrznie pobiera dane z linii DATA za pomocą tej samej procedury, która realizuje INPUT. Tak więc dane w liniach DATA rozdzielane przecinkami traktowane są jako osobne. Polecam sprawdzić działanie takiego kodu:

10 DIM A$(100)
20 RESTORE 
30 READ A$
40 ? A$
50 GOTO 30
100 DATA 1ST LINE
110 DATA 2ND LINE,AND THE REST
120 DATA 3RD LINE
130 DATA 
140 DATA 4TH LINE

Edit: Dane w liniach DATA zawsze trzymane są w postaci niestokenizowanej - niezależnie od tego czy tam są liczby czy tekst, więc jest to mało optymalna metoda trzymania liczb dłuższych niż 6 cyfr.

687

(26 odpowiedzi, napisanych Sprzęt - 8bit)

Świetna wiadomość. Ciekawe czy znajdzie się drugi egzemplarz i czy uda się uzyskać schemat układu?

688

(22 odpowiedzi, napisanych Programowanie - 8 bit)

To błąd BASIC-a - ASC nie sprawdza długości ciągu i bierze zawsze pierwszy znak ze zmiennej tekstowej (czyli starą wartość, albo nieustaloną jeśli zmienna nie była zainicjalizowana wcześniej w pamięci). Uzupełniłem Atariki: http://atariki.krap.pl/index.php/Atari_ … ri%20BASIC

689

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Fox napisał/a:

Próbowałeś IF LEN(A$)=0 ?

Czy jest jakaś sytuacja kiedy A$="" nie zadziała, ale zadziała LEN(A$)=0 ?

690

(22 odpowiedzi, napisanych Programowanie - 8 bit)

10 DIM A$(1)
20 INPUT A$
30 K=0
40 IF A$="A" THEN K=1
50 IF A$="B" THEN K=2
60 IF A$="" THEN K=3
70 ? A$;K
80 GOTO 20

Działa stabilnie i przewidywalnie.

Czy DIM robisz w środku procedury przed INPUT? Za pomocą DIM nie można redeklarować zmiennej więc wyleci wtedy błąd - trzeba to zrobić tylko raz na początku programu. Jeśli go złapiesz TRAP-em, to nie zauważysz problemu.

691

(2 odpowiedzi, napisanych Programowanie - 8 bit)

Ale co w tym dziwnego? To jest po prostu rozwinięte dzielenie przez 9.

692

(19 odpowiedzi, napisanych Emulacja - 8bit)

Na pececie działa świetnie! Dzięki Fox.
Przydałby się wybór songu.

693

(52 odpowiedzi, napisanych Fabryka - 8bit)

@Pin: Bo to jest do czego innego. Zdaje się że to jest bardziej rozwinięta wersja CartExpandera, którego to miałeś przyjemność testować.

694

(6 odpowiedzi, napisanych Sprzęt - 8bit)

COPY z parametrem /A - zobacz do manuala.

695

(74 odpowiedzi, napisanych Fabryka - 8bit)

Hehe. Za każdą nową wersją dochodzę ciut dalej :)
A jak będziesz robił wersję GTIA to zrobiłbyś może jakąś opcję w menu żeby można było pograć na GTIA bez przełączania monitorów?

Edit: A, i kasuj status BREAK przed wejściem do gry.

696

(6,129 odpowiedzi, napisanych Kolekcjonowanie)

Ale skąd ta cena 6.4K ? Przecież jest napisane na pudełku 64K.

697

(7 odpowiedzi, napisanych Software, Gry - 8bit)

@toscanii: http://www.atari.org.pl/tape_preservation_project
Poza tym na głównej stronie portalu AtariArea znajduje się sekcja "Artykuły" i "FAQ". Możesz tam znaleźć różne rzeczy.

698

(31 odpowiedzi, napisanych Software, Gry - 8bit)

Ja oprogramowaniem mógłbym się zająć, ale nie w najbliższym czasie, bo mam kilka projektów do zrobienia.

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).

700

(31 odpowiedzi, napisanych Software, Gry - 8bit)

W FPGA jest tutaj razem z wewnętrznym ROM-em: https://github.com/trcwm/Speech256