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 19:12
       
      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 20:12 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 21:12 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 21:12
       
      Potwierdzam, teraz wszystko ładnie słychać.
      Na razie zdobyłem tylko 473 pkt. :)
      • 5:
         
        CommentAuthorxeen
      • CommentTime8 Dec 2009 22:12
       
      jeszcze raz dzięki:)
      • 6:
         
        CommentAuthormiker
      • CommentTime8 Dec 2009 22:12 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 23:12
       
      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 00:12
       
      Nowa wersja juz w katalogu gier.
      • 9:
         
        CommentAuthormiker
      • CommentTime9 Dec 2009 20:12
       
      @xeen: i co - próbowałeś już dłubać w gierce może?
      • 10:
         
        CommentAuthorxeen
      • CommentTime9 Dec 2009 22:12
       
      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 22:12 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 23:12 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 23:12 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 23:12
       
      no i jeszcze proszę o namiary na super packer - zapoznam się chętnie:)
      • 15:
         
        CommentAuthormiker
      • CommentTime10 Dec 2009 06:12
       
      jest np. tutaj: ->link<-
      • 16:
         
        CommentAuthorxeen
      • CommentTime10 Dec 2009 22:12 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 22:12 zmieniony
       
      Da się spakować obrazek. :)

      Daj znać, odkąd masz ekran, to Ci go odpowiednio przygotuję...
      • 18:
         
        CommentAuthorxeen
      • CommentTime10 Dec 2009 23:12
       
      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 06:12
       
      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 06:12
       
      Jak nie dasz rady, może spróbujemy "moją" metodą, tylko z roboty wrócę. :)
      • 21:
         
        CommentAuthorxeen
      • CommentTime11 Dec 2009 09:12
       
      chyba wiem dlaczego, spróbuje poprawić:)
      • 22:
         
        CommentAuthorMaW
      • CommentTime11 Dec 2009 16:12
       
      Czy jest możliwość, by gra pokazywała "ciągnięcie pola" ?
      • 23:
         
        CommentAuthorxeen
      • CommentTime11 Dec 2009 16:12
       
      tzn? :))
      • 24:
         
        CommentAuthormiker
      • CommentTime11 Dec 2009 18:12 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 18:12 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 19:12
       
      Wystarczyłoby chociaż podświetlanie 4 rogów kwadratu.
      • 27:
         
        CommentAuthorxeen
      • CommentTime11 Dec 2009 19:12 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 19:12
       
      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 19:12
       
      dzięki:)
      no to wersja square_.xex powinna wylądować w repo....
      • 30:
         
        CommentAuthormiker
      • CommentTime11 Dec 2009 21:12
       
      @zilq: sprawdź maila!
      • 31:
         
        CommentAuthorzilq
      • CommentTime12 Dec 2009 00:12
       
      miker, sprawdziłem i dziękuję.
      • 32:
         
        CommentAuthorzilq
      • CommentTime12 Dec 2009 01:12
       
      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 09:12
       
      Do pola gry wystarczą 3 duchy w poczwórnej rozdzielczości poziomej. Kwestia pamięci jednak pozostaje otwarta.
      • 34: CommentAuthormono
      • CommentTime12 Dec 2009 11:12 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 19:12 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 20:12
       
      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ę.......