1 Ostatnio edytowany przez mtjk (Wczoraj 18:13:00)

Po długiej przerwie od Atari postanowiłem powrócić do niego i naszło mnie, aby stworzyć jakiś prosty projekt.
Jako dzieciak bawiłem się językiem BASIC, ale teraz po wielu latach siedzenia w językach wysokiego poziomu na PC raczej ten język nie wchodzi w grę.
Mad-Pascal wydaje mi się fajnym rozwiązaniem.
Oczywiście szybko natrafiłem na pierwsze problemy.
Póki co moim założeniem jest sprawdzenie możliwości graficznych.
I tu moje pierwsze pytanie. Czy jest możliwe wyświetlanie duszków w trybie graficznym 15 bez magicznych sztuczek w assemblerze?
Tryb graficzny 15 dlatego, że oferuje akceptowalną "rozdzielczość" + 4 kolory. Jakby doszły do tego 4 kolory duszków to jest to czego potrzebuję.

Mój kod:

uses pmg, crt, graph;
var
    p0Data: array[0.._P_MAX] of byte = (28, 8, 137, 126, 62, 34, 34, 102, 0, 0, 0, 0, 0, 0, 0);
begin
    InitGraph(15+16);
    
    SizeP(0, 0);
    ColorPM(0, 58);
    p_data[0] := p0Data;
    
    SetPM(_PM_DOUBLE_RES);  
    InitPM(_PM_DOUBLE_RES);
    
    ShowPM(_PM_SHOW_ON);  
    MoveP(0, 60, 10);
    
    ReadKey;
    ShowPM(_PM_SHOW_OFF);
end.

Wyświetla artefakty w tym trybie (jak w załączniku). Dlaczego? Rozumiem, że dane w pamięci się "gryzą" ze sobą. Jak temu zaradzić i czy się da to zrobić tylko i wyłącznie za pomocą mad-pascala?
Próbowałem też wykorzystując bibliotekę Bociana b_pmg ale efekt ten sam.

Post's attachments

atariGr15sprite.png 2.32 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.

2

trochę na temat architektury Atari trzeba wiedzieć żeby zmierzyś się z tym tematem

przykłady wykorzystania PMG są dostępne
https://github.com/tebe6502/Mad-Pascal/ … /graph_pmg

ogólnie sprowadza się to do ustalenia właściwego adresu danych dla PMG, a nie dowolnego
http://atariki.krap.pl/index.php/PMG

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

3

Dzięki za odpowiedź.
Przykłady przestudiowałem i wszystko fajnie ale tylko w trybach 2 kolorowych.
Gdy inicjuję tryb 4 kolorowy to "śmieciowe" piksele się pojawiają.
Walczę z właściwym adresem danych dla PMG, ale póki co bez skutecznie.
Myślałem, że dla prostego wyświetlenia duszka w trybie 4 kolorowym jest to już ogarnięte w bibliotece pmg mad-pascala.
Najwidoczniej będzie z tym więcej zabawy niż myślałem :|

4

Przejrzyj sobie na początek mapę pamięci Atari:

https://www.atariarchives.org/mapping/memorymap.php

Adres dla PMG musi zawsze zaczynać się na granicy 1K dla duchów w rozdzielczości podwójnej lub 2K dla rozdzielczości pojedynczej.

W tym miejscu jest to wyjaśnione:

https://www.atariarchives.org/mapping/m … 20MSB%20of

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.

5

może lepiej podejrzeć przykłady które nie korzystają z unit PMG, tylko w podobny sposób jak w BASIC-u odwołują się do rejestrów GTIA/ANTIC odpowiedzialnych za grafikę PMG

https://github.com/tebe6502/Mad-Pascal/ … vaders.pas
https://github.com/tebe6502/Mad-Pascal/ … aviten.pas

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C