atarionline.pl SQUARE - prośba o sprawdzenie - 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:
       
      CommentAuthorxeen
    • CommentTime8 Dec 2009
     
    Wprowadziłem poprawki dotyczące dźwięku i innych drobnostek.
    Mam prośbę (ponieważ nie mam prawdziwego sprzętu) - czy ktoś może sprawdzić czy wszystko jest ok z muzyczką na rzeczywistym ATARI?
    z góry dzięki, gra w załączniku
    • 2:
       
      CommentAuthormiker
    • CommentTime8 Dec 2009 zmieniony
     
    Odpalone spod QMEG-a (też ładnie CMCa lubi kaszanić) -> gra wszystko OK.

    Co do samej gry - czemu tylko kwadraty i czemu to nie jest w pliku? W sensie co on musi doczytywać i CZY musi?

    Czas może Zilq-owi jakieś fajne instrumenty podosyłać... ;)

    Ale mimo wszystko dobra robota.
    • 3:
       
      CommentAuthorxeen
    • CommentTime8 Dec 2009 zmieniony
     
    dziękuję

    tylko kwadraty aby było trudniej
    można oczywiście pokusić się jeszcze o wersję plikową, chyba wystarczy pamięci:D
    • 4:
       
      CommentAuthorlarek
    • CommentTime8 Dec 2009
     
    Potwierdzam, teraz wszystko ładnie słychać.
    Na razie zdobyłem tylko 473 pkt. :)
    • 5:
       
      CommentAuthorxeen
    • CommentTime8 Dec 2009
     
    jeszcze raz dzięki:)
    • 6:
       
      CommentAuthormiker
    • CommentTime8 Dec 2009 zmieniony
     
    Hmm... skoro jest wczytywany ciągle tylko obrazek tytułowy, można go dać na stałe "niżej" i tylko MOVE-ować na ekran w razie nagłej potrzeby.
    Jakbyś miał trudności z polinkowaniem tego, daj znać. Ja już "pofajlowałem" swego czasu parę gier Larka (pewnie też parę innych się da, a co! :) ).
    • 7:
       
      CommentAuthorzilq
    • CommentTime8 Dec 2009
     
    miker: (tak wcisnę swoje trzy grosze) Zilq nie powie nie, na instrumenty, hehe. Po za tym, muszę się w końcu odważyć i spróbować "pograć" w czymś innym, a mały wstęp w postaci instrumentów z pewnością dopomoże ;)
    • 8:
       
      CommentAuthorKaz
    • CommentTime9 Dec 2009
     
    Nowa wersja juz w katalogu gier.
    • 9:
       
      CommentAuthormiker
    • CommentTime9 Dec 2009
     
    @xeen: i co - próbowałeś już dłubać w gierce może?
    • 10:
       
      CommentAuthorxeen
    • CommentTime9 Dec 2009
     
    coś tam próbuję - powinno się dać,

    fonty mam zapisane binarnie dlatego mam kolejne lamerskie pytanie początkującego - jak ustawić nagłówek pliku tak, aby można było, po prostu użyć bload (tzn w nałówku zahardcodeować adres pod który plik się wczyta)?
    to się robi jakoś pod dosem, czy też osonym programikiem?

    jakiego programu używacie do zlinkowania w jeden plik?
    do wygenerowania exe użyem linker.com, ale z tego co widzę on linkuje tylko ctb i runtime.exe (albo nie umiem go używać)

    rozumiem także, że bload jest wtedy zbędne i po prostu je usuwam z kodu?

    z góry dzięki za podpowiedzi....
    • 11:
       
      CommentAuthormiker
    • CommentTime9 Dec 2009 zmieniony
     
    W sumie to kwestia jkest wywalenia wszelkich BGETów, BLOADów itd. z kodu programu. O ile pliczek, który chcemy dołaczyć, ma nagłówek binarny, po prostu dołaczamy go za pomocą np. APPENDa lub w DOSie 6.4 komendą COP SKAD, DOKAD/A (gdzie DOKAD jest plikiem gry (COM zrobiony wcześniej linkerem), do którego dołączamy dane (też binarne)). Jeżeli natomiast plik to same dane (wczytywane pierwotnie przez BGET), należy dorobić do niego nagłówek binarny. Można to zrobić np. SuperPackerem (opcja F - load data file) gdzie podajemy tylko adres początkowy danych. Można też z poziomu samego TurboBasica. Po wczytaniu danych na ich odpowiednie miejsce w pamięci dajemy:
    OPEN #1,8,0,"D:NAZWA.EXT":PUT #1,$FF,$FF,ML_SKAD,ST_SKAD,ML_DLUG-1,ST_DLUG-1:
    BPUT #1,SKAD,DLUG:CLOSE #1
    (ST - starszy bajt adresu, ML - młodszy, SKAD - skąd zapisujesz DLUG - długość pliku)
    Wyjaśnię jeszcze jak okreeslić adresy zgrywania. Załóżmy że dane masz od adresu 32768. "? HEX$(32768)" da Ci 8000 (szesnastkowo), czyli procka zapisu binarki będzie wyglądać tak (dla SKAD=$8000, DLUG=$1E00):
    OPEN #1,8,0,"D:NAZWA.EXT":PUT #1,$FF,$FF,$00,$80,$FF,$9D:
    BPUT #1,$8000,$1E00:CLOSE #1


    Jak może zauważyłeś, dałem tam DLUG-1, ponieważ adres SKAD, jest już "jedynką", nie "zerem" skali, także żeby nie nadkładać bajtu odejmujemy 1.
    Nieco to zamotane, ale jak coś - pytaj. :)
    • 12:
       
      CommentAuthorlarek
    • CommentTime9 Dec 2009 zmieniony
     
    Jeżeli fonty w RAM dałeś gdzieś między stroną 100 a 200 (POKE 756,?) to możesz użyć programu SUPGEN 2.00
    opis: ->link<-
    plik: ->link<-
    Uruchom program, w opcjach wybierz najpierw odczyt. Wczytaj swój plik fonty.FNT, wybierz pownownie opcje, ale tym razem zapis, wpisz nazwę pliku lub zostaw obecną, wybierz - tu najważniejsze - "OBJ" a następnie początek pamięci, gdzie ma zostać umieszczony zestaw w >>stronach<<! Czyli to co masz w programie jako POKE 756,>>strona<< i gotowe. SUPGEN zapisze na dyskietce gotowy plik z nagłówkiem dosowym. Dlaczego między 100 a 200? A bo tak kiedyś sobie wymyśliłem :) A, wartości można zmieniać co 1KB, czyli co 4 strony. W moich programach to wystarczyło :D

    Do łączenia plików ja używam programu The Boss I ->link<-
    Program oczywiście należy wczytać z jakiegoś DOSa. Obsługa nie jest skomplikowana:
    1. wczytujemy pierwszy plik opcją nr 1 - load
    2. dołączamy kolejny plik opcją nr 2 - link
    3. znów możemy dołączyć plik opcją nr 2 - link
    4. i znów...
    5. jak nam już braknie plików do łączenia ;-) to zapisujemy opcją nr 3 - save

    Nazwy plików zawsze podajemy z pełną cieżką i nazwą urządzenia, np: "D:ZNAKI.FNT".
    • 13:
       
      CommentAuthorxeen
    • CommentTime9 Dec 2009 zmieniony
     
    dziękuję, w ramach nauki będę próbował i pewnie "żebrał" o kolejne porady w razie niepowodzeń:)

    edit: (bo napisałem bzdurę:)

    fonty mam na początku obniżonego ramtop w tbxl
    chyba zatem programik supgen może zadziałać
    pozostałe rzeczy mam plikowo przez bload

    no to próbuję.....
    • 14:
       
      CommentAuthorxeen
    • CommentTime9 Dec 2009
     
    no i jeszcze proszę o namiary na super packer - zapoznam się chętnie:)
    • 15:
       
      CommentAuthormiker
    • CommentTime10 Dec 2009
     
    jest np. tutaj: ->link<-
    • 16:
       
      CommentAuthorxeen
    • CommentTime10 Dec 2009 zmieniony
     
    a niech to, minimalnie mi się nie mieści:(
    w tbxl ramtop obniżyłem o max 48 (większe liczby powodują kaszanę na ekranie)
    fonty zajmują mi 4*1024 ($9000-$9400)
    muza ($9500,$9c06),
    plr ($9c07, $a3c8)
    no i obrazek (320/8)*192=7680, co daje $a3c9-$c1c9

    ramtop oryginalny = 192*256=C000, a zatem wykraczam poza

    da się jakoś wygospodarować zaskórniaki gdzieś indziej?

    zobaczę czy uda mi się zejść wczytując tylko fragment obrazka bez czarnej góry i czarngo dołu).....

    edit:
    no przy fragmencie obrazka może wejdzie - walczę zatem
    • 17:
       
      CommentAuthormiker
    • CommentTime10 Dec 2009 zmieniony
     
    Da się spakować obrazek. :)

    Daj znać, odkąd masz ekran, to Ci go odpowiednio przygotuję...
    • 18:
       
      CommentAuthorxeen
    • CommentTime10 Dec 2009
     
    no i coś mi się chyba udało?

    można prosić o sprawdzenie czy nie ma kwasu na real sprzęcie?

    tak czy siak, wielkie dzięki Panowie za coaching:) dużo mi dają takie rzeczy:)
    • 19:
       
      CommentAuthormiker
    • CommentTime11 Dec 2009
     
    Działa, ale po skończonej grze pod nickiem ZILQ jest nieco śmieci z "podczas gry"... Może kasować tam po prostu jakimś FILL-em czy czym?
    • 20:
       
      CommentAuthormiker
    • CommentTime11 Dec 2009
     
    Jak nie dasz rady, może spróbujemy "moją" metodą, tylko z roboty wrócę. :)
    • 21:
       
      CommentAuthorxeen
    • CommentTime11 Dec 2009
     
    chyba wiem dlaczego, spróbuje poprawić:)
    • 22:
       
      CommentAuthorMaW
    • CommentTime11 Dec 2009
     
    Czy jest możliwość, by gra pokazywała "ciągnięcie pola" ?
    • 23:
       
      CommentAuthorxeen
    • CommentTime11 Dec 2009
     
    tzn? :))
    • 24:
       
      CommentAuthormiker
    • CommentTime11 Dec 2009 zmieniony
     
    Przeglądając pamięć pod emulcem zauważyłem, że dane możesz trzymać już od $8f50 - to tak jakby "parę bajtów" jeszcze brakowało.
    • 25:
       
      CommentAuthorMaW
    • CommentTime11 Dec 2009 zmieniony
     
    Xeen:

    i jeżeli by była możliwość, to prosiłbym o podkolorowanie bocznych tabelek, by tak nie było szaro :p
    • 26: CommentAuthorilmenit
    • CommentTime11 Dec 2009
     
    Wystarczyłoby chociaż podświetlanie 4 rogów kwadratu.
    • 27:
       
      CommentAuthorxeen
    • CommentTime11 Dec 2009 zmieniony
     
    w ramach nauki - pewnie, że spróbuję podkolorować:)
    jaki program do edycji duszków polecicie?

    póki co - to jest wersja plikowa, która powinna nie posiadać błędu zauważonego przez Mikera

    Kaz, jeżeli to przypadkiem przeczytasz - prośba o umieszczenie w "repozytorium" (z góry dzięki)
    • 28:
       
      CommentAuthormiker
    • CommentTime11 Dec 2009
     
    OK, teraz działa dobrze. Dodałem jeszcze wyłaczenie ekranu na czas odczytu (taką sobie sekwencję bajtów: 00 D4 00 D4 00 2F 02 2F 02 00). Po co śmiecić, kiedy nie trzeba. :)
    • 29:
       
      CommentAuthorxeen
    • CommentTime11 Dec 2009
     
    dzięki:)
    no to wersja square_.xex powinna wylądować w repo....
    • 30:
       
      CommentAuthormiker
    • CommentTime11 Dec 2009
     
    @zilq: sprawdź maila!
    • 31:
       
      CommentAuthorzilq
    • CommentTime12 Dec 2009
     
    miker, sprawdziłem i dziękuję.
    • 32:
       
      CommentAuthorzilq
    • CommentTime12 Dec 2009
     
    MaW: z tabelką, dobrze by już było, jakby jej "inwertnąć" kolory.
    Przy jej obecnej szerokości, braknie PMów na "kwadrat" który pochłonie ich aż 3. Chyba, że wykorzystać piątego, sklejonego z Missilesów lub zawęzić tabelkę.
    Wiem, robię z igły widły :P

    Swoją drogą, można by walnąć jakieś niewielkie DLI, coby ją (tabelkę) w przypadku podkolorowania duszkami, nieco wzbogacić.

    Po za tym, duchy zabiorą kolejne 512 (przy 4) lub 640 (z missilesami) bajty.

    Sorki, tak sobie gaworzę.
    • 33:
       
      CommentAuthormiker
    • CommentTime12 Dec 2009
     
    Do pola gry wystarczą 3 duchy w poczwórnej rozdzielczości poziomej. Kwestia pamięci jednak pozostaje otwarta.
    • 34: CommentAuthormono
    • CommentTime12 Dec 2009 zmieniony
     
    @Zilq: Jeśli macie statyczne sprajty, można na przerwaniu DLI przełączyć ich kształt w GRAFPx/GRAFM w odpowiednich liniach. Nie zajmie Wam to wtedy 512b (podwójna rozdzielczość), tylko kilkadziesiąt bajtów programu DLI. Poczwórna szerokość sprajtów daje ci "atrybuty" podkolorowujące (podobnie, jak w ZX Spectrum) - wystarczy wtedy 4 sprajty; missilami można podkolorować niektóre piksele. Kształty, pozycję, kolory sprajtów i konfigurację GTICTLS można ustalić POKEami statycznie (nie włączać DMA dla sprajtów w DMACTLS, bo tu rysujemy je ręcznie).
    Obsługa DLI:
    dliinit:
    ldx <dliproc
    ldy >dliproc
    lda #%11000000
    stx DLIV ;$200
    sty DLIV+1
    sta NMIEN ;$D40E
    rts
    dliproc:
    pha
    lda #78 ;połowa ekranu
    cmp VCOUNT ;$D40B
    lda #%11 ;włącza rysowanie sprajtów
    bcc *+4
    lda #0 ;wyłącza rysowanie sprajtów
    sta WSYNC ;$D40A
    sta PMCNTL ;$D01D
    pla
    rti

    Statyczne pasy pionowe będą rysowane od pierwszego ustawionego przerwania DLI w programie dlist, aż do ostatniego (w tym przypadku podkolorowanie włączane jest w przerwaniu ustawionym przed linią 78 VCOUNT (78*2 linia ekranowa), a wyłączane w przerwaniu ustawionym po niej; można tę wartość oczywiście zmieniać - chodzi tutaj o rozgraniczenie przerwania, w którym chcemy włączyć sprajty i przerwania, w którym chcemy je wyłączyć).

    Edit:
    Jeśli chcielibyście mieć kontrolę nad treścią sprajtów można uruchomić przerwania dli co 8 linię w grafice i trzymać 125 bajtów (5 tablic po 25) z kształtem sprajtów (shapex):
    dliinit:
    ldx <dliproc
    ldy >dliproc
    lda #%11000000
    stx DLIV ;$200
    sty DLIV+1
    sta NMIEN ;$D40E
    rts
    dliproc:
    sta areg
    stx xreg
    ;tu ewentualnie wstawiac opoznienia
    lda VCOUNT ;$D40B
    lsr @
    lsr @
    tax
    lda shape0-4,x
    sta GRAFP0 ;$D00D
    lda shape1-4,x
    sta GRAFP1 ;$D00E
    lda shape2-4,x
    sta GRAFP2 ;$D00F
    lda shape3-4,x
    sta GRAFP3 ;$D010
    lda shapem-4,x
    sta GRAFM ;$D011
    ldx xreg
    lda areg
    rti
    areg equ $cb
    xreg equ $cc

    Trzeba się jednak liczyć z tym, że być może coś tam będzie mrugać i docyklować przerwanie wstawiając na początku odpowiednią ilość nop (2 cykle), lda 0 (3 cykle), lub jmp *+3 (5 cykli).
    Przerwanie włącza się wtedy w ostatnim EMP8, co ósmą linię grafiki i w JVB (ostatni 25 bajt każdej tablicy kształtu powinien zawierać 0, żeby na borderach dolnym i górnym nie było śmieci). POKEami na stałe ustala się konfigurację GTICTLS, PMCTL, COLPMxS, COLPF3S (w przypadku włączenia 5 playera), HPOSPx, HPOSMx, SIZEPx i SIZEM.
    Oczywiście przerwania można ustawiać rzadziej - indeks tablicy jest jednak liczony jako VCOUNT/4 czyli z dokładnością do 8 linii ekranowych więc kształt i tak musi się znaleźć w odpowiednim miejscu tablicy.
    Adresowanie lda shapex-4,x zakłada, że w liniach ekranowych 0..31 nie będzie przełączana treść. Zmieniając -4 można malować sprajty na ramkach (pamiętając o włączeniu przerwania w pustych liniach), ale trzeba rozszerzyć ilość miejsca na ich kształt (max 156/4=39, ale widoczna na ekranie jest ok 30). Pierwsza widoczna linia ma index VCOUNT 4 więc praktycznie wystarczy lda shapex-1,x.
    • 35: CommentAuthormono
    • CommentTime14 Dec 2009 zmieniony
     
    Przykład w załączniku. Procedura w asm korzysta ze strony 6 w zasadzie całej. Są tam ulokowane tablice dla kształtu sprajtów - zmienne SH0..3 i SHM (po 32 bajty) i procedura przerwania DLI oraz procedura ustawiania wektora przerwania DLIV.
    Procedura USR jako parametr bierze adres procedury przerwania DLI do ustawienia, a zwraca adres poprzedniego (można zachować w zmiennej i przywrócić później ponownym wywołaniem USR).
    Nie jestem pewny poprawności działania, bo mogę to testować jedynie na emulatorze, a ten pokazuje mi jakieś śmieci - jeśli coś jest nie tak prosiłbym o sygnał i jakieś info co się dzieje.
    • 36:
       
      CommentAuthorxeen
    • CommentTime14 Dec 2009
     
    bardzo dziękuję za pomoc, postaram się skorzystać,
    w pierwszej kolejności muszę zgłębić nieco teorii, spróbować zrozumieć oczywiste dla Ciebie rzeczy ;)
    próbuję.......