atarionline.pl MAD-Pascal - Początki - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1:
       
      CommentAuthorbocianu
    • CommentTime16 May 2019
     
    Pirxowi chodziło chyba, żebyś sprawdził czy rozkaz przełączania zestawu znaków się w ogóle wywołuje, wstawiając w to miejsce np. zmianę koloru ramki lub tła...
    • 2: CommentAuthorMADRAFi
    • CommentTime16 May 2019
     
    wykonuje sie , wystarczy ze wstawie ten sam zestaw znakow i mam inny obraz ;)
    • 3:
       
      CommentAuthorsun
    • CommentTime16 May 2019 zmieniony
     
    wniosek? drugi zestaw jest schrzaniony, albo nie załadował się tam, gdzie się spodziewasz, czyli adres 1 + $400 a tam jest sieczka. Poza tym... ciągle nie wiemy jaki używasz tryb. Zakładam że $02, więc $400 jest ok, ale może źle to widzę i nie jest to $02.

    CHBASE $D409 Write
    SHADOW: CHBAS $02F4
    Character Base Address
    This specifies the page of the base address for the character set. ANTIC Modes 2, 3, 4, and 5 use 128 characters in the character set and require the CHBASE value begin on a 1K boundary. ANTIC Modes 6 and 7 use 64 characters, so the CHBASE value must begin on a 512 byte boundary.
    • 4:
       
      CommentAuthorpirx
    • CommentTime17 May 2019 zmieniony
     
    LOGO_CHARSET_ADDRESS = $DC00;

    ROM masz wyłączony, bo to adres w ROM właśnie?
    • 5: CommentAuthorMADRAFi
    • CommentTime17 May 2019
     
    Skoro pod tym adresem jest wgrany font i sie pokazuje na ekranie, to chyba wylaczony :)

    jak dla mnie to pod adresem gdzie powinien znajdowac sie poczatek 2 zestawu fontu jest sieczka. Albo to co w pliku fnt nie jest tym czym powinno albo mad-pascal zle wczytuje ten plik 3kb.
    • 6: CommentAuthortebe
    • CommentTime18 May 2019
     
    ->link<-

    nowa wersja G2F z zapisem obrazka w trybie DLI do pliku *.PAS

    tylko zmiany kolorów, bez PMG, tylko w pierwszej linii nowego wiersza
    • 7:
       
      CommentAuthorDracon
    • CommentTime18 May 2019
     
    "The requested URL /graph2font_v4.0.2.7_full.7z was not found on this server."
    • 8: CommentAuthorMADRAFi
    • CommentTime18 May 2019
     
    Juz Tebe poprawil
    • 9: CommentAuthorMADRAFi
    • CommentTime19 May 2019
     
    Dzieki wytezonej pracy na spotkaniu udalo sie zlokalizowac blad w kodzie :)
    Zapomnialem przepisac prawidlowy adres pamieci ekranu. Akurat 2 font ladowal w miejscu ktory byl nadpisywany :)

    Polecam lokalne spotkania :)
    Udalo sie dzieki wspolpracy z kolega Krotkim zlokalizowac kilka innych bledow i je wyeliminowac.
    • 10: CommentAuthorgorgh
    • CommentTime20 May 2019
     
    Fajnie, to zawsze spora ulga
    • 11: CommentAuthortebe
    • CommentTime20 May 2019
     
    jest taka metoda, najlepiej właśnie komuś zacząć tłumaczyć jak działa program krok po kroku, zaczniemy wtedy zwracać uwagę na rzeczy które wydawały się nam oczywiste i które pomijaliśmy przez swoją oczywistość
    • 12:
       
      CommentAuthormav
    • CommentTime20 May 2019
     
    Może to być nawet gumowa kaczuszka.
    • 13:
       
      CommentAuthorbocianu
    • CommentTime20 May 2019
     
    ...ale koniecznie żółta :)
    • 14: CommentAuthorMADRAFi
    • CommentTime20 May 2019 zmieniony
     
    Szukam metody w jaki sposob mozna odtworzyc pojedynczy instrument spod mad pascala z pliku cmc.
    zakladam ze na 3 kanalach gra mi muzyka wykorzystujac unit cmc. 4 kanal chcialbym przeznaczyc wlasnie na efekty.
    Piszacy w asm pewnie maja to juz rozpracowane. W unicie CMC nic takiego nie wystepuje co moglbym uzyc jako gotowiec.


    Przy okazji jakby ktos mial jakolkolwiek muzyke ktora zostawila 1 kanal nieuzywany to bylbym wdzieczny. Przydalabay sie do testowania efektow.
    • 15:
       
      CommentAuthorsun
    • CommentTime21 May 2019
     
    Z tego co pamiętam, to CMC łączy 2 kanały w 1 16 bitowy dla basu na stałe, więc muza zabiera 4 kanały, ale mogę się mylić.
    • 16: CommentAuthorMADRAFi
    • CommentTime21 May 2019
     
    Nie mylisz sie. Musialbym miec 2 kanalowa muze z okazjonalnym 3 konalem tak by sie z efektami nie pokrylo.
    • 17: CommentAuthorurborg
    • CommentTime21 May 2019
     
    @sun
    Też tak pamiętam że cmc miało na sztywno 3 kanały z czego 1 16-bitowy.
    • 18: CommentAuthorMADRAFi
    • CommentTime22 May 2019 zmieniony
     
    Mam pewna obserwacje/problem i nie wiem z czego to wynika
    Tworze sobie display liste ktora zawiera 2 tryby tekstowe z rozna iloscia kolorow.
    Rozne linie musza miec rozny font i kolory.
    I teraz sa 2 przypadki:
    1. display lista z 1 DLI
    dl_start
    dta DL_DLI + DL_BLANK8
    dta DL_MODE_40x24T5 + DL_LMS, a(TXT_ADDRESS)
    :12 dta DL_MODE_40x24T5
    :11 dta DL_MODE_40x24T2
    dta DL_BLANK8
    dta DL_JVB, a(dl_start)


    W tym wypadku DLI ma zliczanie numerow linii i zmiane parametrow wedlug linii.
    Wszystko dziala oprocz 1 kreski ktorej nie moge sie pozbyc ( jakies smieci w pamieci)

    2. display lista z 4 DLI - kazda odpowiada za wprowadzenie zmiany w foncie i/lub kolorach

    dl_start
    dta DL_DLI + DL_BLANK8
    dta DL_MODE_40x24T5 + DL_LMS, a(TXT_ADDRESS)
    :5 dta DL_MODE_40x24T5
    :5 dta DL_DLI + DL_MODE_40x24T5
    ;:2 dta DL_DLI + DL_MODE_40x24T5
    :2 dta DL_MODE_40x24T5
    :11 dta DL_DLI + DL_MODE_40x24T2
    dta DL_BLANK8
    dta DL_JVB, a(dl_start)


    I tutaj powstaje problem, gdyz nie wszystkie DLi sie wykonuja.
    Zauwazylem ze max moga wykonac sie 2, gdy probuje uzyc 3 lub 4 obraz jest nieprawidlowy, gdyz DLI sie nie wykonaly wiec nie zaladowaly prawidlowego fontu.


    W VBL jest odgrywana muzyka cmc w tym czasie.

    Jakies sugestie jak to rozwiazac?
    • 19: CommentAuthortebe
    • CommentTime22 May 2019
     
    adres display listy, używasz predefiniowanej tablicy która jest umieszczana w pamięci od adresu CODE_ORIGIN+... na który nie masz wpływu, oprócz jego wartości początkowej

    jeśli umieścisz wszystkie te predefiniowane tablice na początku bloku programu to będą ustawiane od CODE_ORIGIN+..., jeśli poprzedzisz je innymi tablicami to zostaną przesunięte w pamięci

    musiałbyś wyznaczyć ściśle jakiś adres pod który będziesz przepisywał swoje predefiniowane tablice
    • 20: CommentAuthorMADRAFi
    • CommentTime22 May 2019
     
    Tebe musialbys jakos lopatologicznie tlumaczyc. Nic mi to nie mowi co napisales.
    przecierz display listy umieszczam pod okreslonym adresem w pamieci.
    const.inc:
    DISPLAY_LIST_ADDRESS_TITLE = $A000;

    resources.rc:
    DISPLAY_LIST_ADDRESS_TITLE rcasm 'dlist_title.asm'
    • 21: CommentAuthortebe
    • CommentTime22 May 2019
     
    a to przepraszam :)
    • 22:
       
      CommentAuthormav
    • CommentTime22 May 2019
     
    Czemu akurat z cmc? RTM nie jest wydajniejszy? Na pewno posiada możliwość "nieużycia" 4 ścieżek, tylko 3.
    • 23: CommentAuthorMADRAFi
    • CommentTime22 May 2019 zmieniony
     
    Akurat CMC daje mi mozliwosc wstrzymywania i kontynuowania odgrywania muzyki po operacji IO.
    Mam w grze troche odczytywania z dyskietki oraz mozliwosc zapisu.
    • 24: CommentAuthorMADRAFi
    • CommentTime14 Jun 2019
     
    Czy ktos orientuje sie, Mono?, w mozliwosci zmian w odtwarzaniu plikow rmt?

    Tak by moznabylo wstrzymac odtwarzanie dzwieku na czas operacji I/O i kontynuowania odtwarzania dzwiku od miejsca w ktorym go zatrzymalismy.
    • 25: CommentAuthorVidol
    • CommentTime14 Jun 2019
     
    Aby odtwarzac muzyke musisz raz lub wiecej razy na ramke skakac do jsr RASTERMUSICTRACKER+3
    Robisz to w petli glownej lub na przerwaniu Vbl, wiec aby zatrzymac muzyczke na czas wczytywania danych wystarczy przestac wykonywac procedure RASTERMUSICTRACKER+3. Najprosciej by to zrobic to trzeba zarezerwowac sobie jakis znacznik na stronie zerowej czy muzyczka ma grac czy nie, 0-cisza, 1-graj, i sprawdzac go przed wywolaniem playera.
    • 26: CommentAuthorgorgh
    • CommentTime14 Jun 2019
     
    z tym, że jak przestaniesz grać to będzie pogłos na kanałach, bo rejestry pokeya nie będą wyzerowane
    • 27: CommentAuthorVidol
    • CommentTime14 Jun 2019
     
    fakt, i po I/O tez bedzie sieczka w pokeyu i tu zaczynaja sie schody, ciekawe jak to jest zrobione w cmc?
    • 28: CommentAuthorgorgh
    • CommentTime14 Jun 2019
     
    być może jest na to sposób, aby przed IO wyciszyć pokeja (jest taka opcja w rmt playerze, skacze się jsr rastermusictracker+cośtam), po IO wyzerować rejestry pokeja i wrócić do odgrywania, nie gwarantuję, że to zadziała
    • 29: CommentAuthorMADRAFi
    • CommentTime14 Jun 2019
     
    No wlasnie, niby proste a jednak nie.

    Musialby mi to ktos wszystko rozpisac. Nie mam az takie wiedzy na temat pokeya :)

    Potem to jeszcze bede musial zakodowac do modulu MAD-Pascala :)
    • 30: CommentAuthorgorgh
    • CommentTime14 Jun 2019 zmieniony
     
    porozmawiaj z Mono, kontakt znajdziesz tutaj albo na atari area, mono jest specem jeśli chodzi o technikalia
    edit: panem Mono ;)
    • 31:
       
      CommentAuthorsun
    • CommentTime8 Jul 2019
     
    Przyłączę/podłączę się jako pytający:
    MadPascal + pamięć rozszerzona + TMemoryStream oraz używanie etykiet extmem w resources.
    Posiłkowałem się przykładem examples\extmem\vscrol.
    A jeśli mam więcej zasobów niż 1 obrazek, mogę zadeklarować to też jako extmem i zostanie to załadowane jedno za drugim czy też muszę skleić to w 1 plik?
    <code>
    bitmap1 extmem 'assets\pic1'
    bitmap2 extmem 'assets\pic2'
    bitmap3 extmem 'assets\pic3'
    </code>
    Dostęp przez TMemoryStream to tylko ustawienie offsetu (Position) - to przetestowałem :).
    • 32: CommentAuthortebe
    • CommentTime9 Jul 2019
     
    zostanie załadowane od adresu w pamięci dodatkowej BITMAP1, BITMAP2, BITMAP3

    adres pamięci dodatkowej = [0..$fffff], MP (MadPascal) widzi maks 1 MB pamięci dodatkowej (64 banki * 16384 bajty)

    ile jest dostępnej pamięci można sprawdzić w SIZE, po wykonaniu CREATE
    • 33:
       
      CommentAuthorsun
    • CommentTime9 Jul 2019
     
    Fantastycznie. Sprawdzam empirycznie, dziękuję.
    • 34:
       
      CommentAuthorsun
    • CommentTime28 Jul 2019
     
    Pytanie: co to za magiczne pliki .FEAT do RMT playera i czy coś je generuje z modułu czy jak?
    • 35: CommentAuthortebe
    • CommentTime29 Jul 2019
     
    pliki FEAT generuje RMT
    • 36:
       
      CommentAuthorsun
    • CommentTime29 Jul 2019
     
    Dzięki, teraz widzę :) Szukałem, ale nie wpadłem, że to tędy droga.
    • 37:
       
      CommentAuthorsun
    • CommentTime24 Sep 2019
     
    I kolejne moje pytanie:
    Jeśli używam magii extmem, to nie powinienem pakować nic w przestrzeń $4000-$7FFF bo użycie TMemoryStream zrobi tam kaszanę - dobrze myślę i widzę?
    • 38: CommentAuthortebe
    • CommentTime24 Sep 2019
     
    procedury obsługi extmem są umieszczone poniżej $4000 (dla domyślnego adresu kompilacji = $2000) więc możesz

    chyba że byłeś złośliwy i ustaliłeś sobie nowy adres kompilacji -code:4000

    wtedy może być problem
    • 39:
       
      CommentAuthorsun
    • CommentTime24 Sep 2019
     
    A skąd, złośliwy nie jestem. Moje pytanie zasadniczo jest takie: jeśli ustalę etykietę np. muzy na $4000, dodam to do rc a potem użyję TMemoryStream.... to czy przełączając banki w obszarze $4000-$7FFF (sugeruję się małpą pamięci) rozjedzie mi się odtwarzanie. Tak samo jak niechcący wpakuję tam np. dlistę (aktywną akurat). O ile rozumiem to co napisałeś i to jak działa bankowanie, to mogę w ten obszar wrzucić dane, ale nic co w danej chwili np. mam na ekranie lub wręcz pamięć ekranu.
    Dobrze kombinuję?
    • 40: CommentAuthortebe
    • CommentTime24 Sep 2019
     
    musisz na VBL dodać włączenie / wyłączenie banku pamięci z muzą, powinno działać
    • 41:
       
      CommentAuthorKaz
    • CommentTime30 Sep 2019
     
    Tytuł wątku "początki", a tu widzę wre dyskusja na niskopoziomowym poziomie :D
    • 42:
       
      CommentAuthorsun
    • CommentTime30 Sep 2019
     
    No nie da się inaczej, takie są wymagania architektury sprzętowej ;)
    • 43:
       
      CommentAuthorgalu
    • CommentTime30 Sep 2019 zmieniony
     
    Dwa pytania (wracam do kodu po 7 miesiącach przerwy):

    1.
    Na VBLI wykonywałem tylko prosty kod Pascala, instrukcje inc/dec i Poke. Zauważyłem "psucie" obrazu po dołożeniu instrukcji warunkowej - czy to psucie jest spowodowane niepoprawnym odtwarzaniem stanu rejestrów, czy tym, że CPU przestał się wyrabiać (czasowo)? Czy jednym i drugim? :) Na wejściu wywołuję tylko asm { pha }, a na wyjściu asm { pla }.

    2.
    Program składa się w dużej części z definicji tablic. Dołożenie kolejnej tablicy lub np. typu wyliczeniowego (type) powoduje pojawienie się błędu kompilacji w zupełnie innej części kodu ("Error: Expected another 1 array elements" w linii, w której inicjalizuję jakąś dodaną wcześniej i niepowiązaną tablicę). Wynikowy XEX ma 10KB - dołożę jedną linijkę i nie skompiluję go już wcale. Nie stosowałem w kodzie bezwzględnego adresowania, z małymi wyjątkami dla zmiennych wykorzystywanych przez PMG, DL i ew. importów (atari, sysutils, joystick). Co się stało?
    • 44: CommentAuthorMADRAFi
    • CommentTime30 Sep 2019
     
    1. Moim zdaniem nie miescisz sie w ramce
    2. Blad opisuje zla dlugosc tablicy - za malo elementow w tablicy. Sprawdz czy nie ma za malo elementow w czasie przypisywnia - porownaj z definicja tablicy ile ma elementow . Liczymy index tablicy od 0.

    Wiecej mozna powiedziec gdyby byl fragment kodu zrodlowego.
    • 45: CommentAuthortebe
    • CommentTime30 Sep 2019
     
    pobierz ostatnią wersję kompilatora

    ->link<-
    • 46:
       
      CommentAuthorsun
    • CommentTime1 Oct 2019 zmieniony
     
    Hm... wesja 1.6.2 jakoś inaczej alokuje kod, bo program od razu idzie w maliny a na 1.5.x brykał.
    Problem mam z dli, niby po wpisuje mi w $0200 adres $26c8 a tam program dli nie zaczyna się od sta, stx, sty tylko od krzaka.
    Coś tu się za bardzo zoptymalizowało?
    Kod bez zmian.
    1.6.0 jednak działa okey.
    • 47: CommentAuthortebe
    • CommentTime1 Oct 2019
     
    podeślij przykład tego błędnego działania
    • 48:
       
      CommentAuthorbocianu
    • CommentTime1 Oct 2019 zmieniony
     
    jak masz ostatnią wersje MadPascala, to warto też zaktualizowac Mad Assembler do najnowszej. Ja miałem też problemy jak używałem starej wersji mads.exe
    • 49:
       
      CommentAuthorgalu
    • CommentTime1 Oct 2019 zmieniony
     
    Skąd można pobrać mp.exe w wersji 1.6.2?
    Z wersją 1.6.0 problem "Error: Expected another 1 array elements" wciąż występuje (inicjalizacja tablicy jest niby prawidłowa, błąd kompilacji pojawia się dopiero po dodaniu niepowiązanego kodu i to w innym fragmencie listingu). Ale wydaje mi się, że problem jest związany z wykorzystywaniem w kodzie tablic jedno- i dwuwymiarowych z typem wyliczeniowym i jednoczesnym inicjowaniem takiej tablicy - czy taka konstrukcja w była testowana / jest wspierana? Zamienię je na tablice bajtów, a "enumy" na stałe i dam znać czy pomogło.
    • 50: CommentAuthortebe
    • CommentTime1 Oct 2019
     
    na GitHub-ie

    ->link<-

    poproszę o przykład takiej tablicy, a najlepiej o przykład takiego błędu