atarionline.pl Nowa gra: Biedny Pies Antoni - 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.  

    Maciek:

    Dobra gra jak na pierwszy raz, dołączyłem ją do mojego weekendowego zestawu na jutro :)
    Powodzenia! Tylko nie trzymaj SELECT jak będziesz wciskał START :)
    proponuję na początek wariant pośredni czyli wstawki ASM w Bazylu
    Ten etap zaliczyłem już w Psie :) Jest tam właśnie generator znaków napisany jako wstawki ASM. Nie jest to kod najwyższych lotów, ale za to mój własny, osobisty :)
    I gorąco zachęcam do pracy na prawdziwym Atari!
    Praca przy real Atari daje dużo frajdy, ale jednocześnie dużo frustracji dla kogoś przyzwyczajonego do wygodnych edytorów. Na etapie nauki ASM 6502 nader często przydaje mi się Copy&Paste, a jeszcze częściej wielokrotne Undo plus poprzednie wersje plików na SVN :) No i do tego ten HighSpeed w emulatorze.

    Jeśli biorę się do grania lub do przeglądania listingów, to w zdecydowanej większości przypadków na prawdziwej maszynce.
    • 2:
       
      CommentAuthorKaz
    • CommentTime17 Mar 2012
     

    mgr_inz_rafal:

    A tutaj jeszcze obrazek z małego toola, którego zrobiłem w Excelu w celu łatwego projektowania nowych znaków. Jest tu gdzieś miejsce na publikację takich narzędzi? O ile można je tak nazwać...


    A narzedzie gdzie? :)
    Zalacznik poprosze. Moze sie komus kiedys przydac.

    PS. Bedziesz cos myslal o tym edytorze Basica na pececie?
    • 3:
       
      CommentAuthorKaz
    • CommentTime17 Mar 2012
     
    Wersja 2.0 dodana do archiwum gier.
  2.  

    Kaz:

    A narzedzie gdzie? :)
    Zalacznik poprosze
    Proszę bardzo :) Instrukcja nie jest potrzebna.

    Bedziesz cos myslal o tym edytorze Basica na pececie?
    Na razie chyba nie, gdyż chcę zainwestować czas w naukę ASM. Ale jeśli nic mi z tego nie wyjdzie i będę musiał wrócić do Basica, to na pewno pokombinuję z edytorem.

    Na razie bardziej chodzi mi po głowie kompilator Basica na PC, przynajmniej w postaci translatora Basic->Mads :) Do tego jednak jeszcze długa droga, bo muszę nabrać biegłości w ASM i wtedy dopiero będę w stanie ocenić, jakie mam szanse.
    • 5: CommentAuthorMaciek
    • CommentTime17 Mar 2012 zmieniony
     
    Rafał, w czym Ty piszesz kod ASM? Pisząc na prawdziwym Atari też masz edytor całoekranowy i copy/paste/replace + wyszukiwanie, debugger, sandboxa itd. Ludzie, praca na prawdziwym Atari nie polega na poke'owaniu kodu maszynowego, możemy korzystać ze wszystkiego co zostało stworzone na Atari, a jest sporo narzędzi i to bardzo wygodnych. Należy unikać crosscompilerów i to wszystko, co to za przyjemność napisać na Atari grę w C/C++ na Pececie, co to za wyzwanie? Pff. Nawet jeśli piszesz grę na emulatorze, a korzystasz z softu na Atari to OK, ja też tak robię kiedy jestem na urlopie i nie mogę wziąć ze sobą Atari.
  3.  
    Maciek, na PC pracuje mi się szybciej, bo robię to od wielu lat. Pasuje mi duży ekran, układ klawiszy, SVN, prędkość emula, itp.

    Nie twierdzę, że na Atari jest gorzej. W końcu większość klasycznych gier powstawała zapewne bezpośrednio na tym sprzęcie. Jest po prostu inaczej, więc wymagany jest czas, aby się przestawić. Na chwilę obecną ważną dla mnie rzeczą jest ogarnąć ASM i na tym się skupiam. Nie chcę spalać energii na naukę narzędzi na Atari.

    Chętnie jednak poznałbym twój "toolchain" do tworzenia gier bezpośrednio na Atari. Gdybyś podzielił się nazwami narzędzi, to z przyjemnością spróbuję coś z ich pomocą uzyskać.

    Odnośnie przyjemności - tu już każdy ma swoją :) Mi przyjemność daje już sam fakt, że moja gierka napisana na PC uruchomi się i działa na real Atari.
    • 7:
       
      CommentAuthorKaz
    • CommentTime17 Mar 2012
     
    Proszę bardzo :) Instrukcja nie jest potrzebna.


    Dzieki, jest juz w narzedziach na peceta:

    ->link<-
    • 8: CommentAuthorMaciek
    • CommentTime17 Mar 2012 zmieniony
     
    Ok, przecież nie będę Cie zmuszać. Od wielu lat na PC programuje tutaj prawie każdy z nas, ja przynajmniej dlatego właśnie przerzuciłem się na Atari, żeby poczuć klimat. Może już ktoś uzupełnił code::blocks'a o atarynkę? Wtedy już nie będzie żadnej różnicy między jednym a drugim.
    Zobacz sobie jakiś crosscompilator i będziesz wiedział o co mi chodzi.
    No ale jak obecnie tworzysz kod maszynowy, z czego korzystasz? Ja do niedawna korzystałem z Quick Assemblera, teraz przeglądam inne bo ten pierwszy ma mało miejsca na kod i trzeba go pisać częściami.
  4.  

    Maciek:

    Od wielu lat na PC programuje tutaj prawie każdy z nas
    I myślę, że chyba większość jednak dla wygody korzysta z narzędzi na PC do programowania małego Atari. Chociaż oczywiście mogę się mylić, bo w sumie kręcę się tu od niedawna. Może programiści Atari wypowiedzą się, czego używają na co dzień?

    No ale jak obecnie tworzysz kod maszynowy, z czego korzystasz?
    Visual Studio + Visual Assist -> MADS -> Atari800Win. I tak sobie dziergam :)

    A jak to wygląda u ciebie? Sprzedaj jakieś fajne patenty - z chęcią poznam coś nowego.
    • 10: CommentAuthorBluki
    • CommentTime19 Mar 2012 zmieniony
     
    Pograłem trochę i muszę powiedzieć, że chyba dawno nie było tak dobrej gry w Atari BASIC-u! Nie znaczy to, że nie dałoby się tego czy owego zmienić... Gra jest bardzo pamięciożerna i chyba też prądożerna :), gdyż w trakcie rozgrywki padł mi zasilacz do komputera. Na szczęście bezrobocie wśród moich zasilaczy sięga 80%, więc stary został dyscyplinarnie zwolniony, a na jego miejsce ustawiła się kolejka chętnych do pracy nowych zasilaczy :)

    rzekł mgr_inz_rafal:

    Miło mi zaprezentować kolejną i już prawdopodobnie ostatnią wersję gry. Nie planuję więcej jej poprawiać, chyba, że ktoś odnajdzie jakiegoś buga – blockera.

    Chyba nic takiego nie ma, ale pozwoliłem sobie samowolnie pogrzebać w programie. Aby „Biedny Pies Antoni” mógł zaleźć się na mojej ekskluzywnej dyskietce z grami w BASIC-u musiał spełniać podstawowy warunek: umożliwiać wyjście do AUTORUN.BAS. Dlaczego moja dyskietka z grami w BASIC-u jest ekskluzywna? Może na niej zmieścić się tylko 26 gier, a gier w BASIC-u jest... no, na pewno więcej niż 26 :) Stąd duże wymagania.



    Przy okazji wprowadziłem jeszcze jedną drobną zmianę... Nowa wersja „Psa” nosi roboczy numer 2.1 i leży sobie w pewnej plikowni. Gdyby ktoś chciał kliknąć na link na dole, to uprzedzam, że jest zakodowana, a kluczem dysponuje Mgr_inz_rafal. Jeśli zechce, to upubliczni grę oraz ew. szczegóły poprawek. Może jednak nie zechcieć, do czego oczywiście ma pełne prawo – zmian dokonałem bez jego wiedzy i zgody.

    Biedny Pies Antoni 2.1

    - - - - - - - - - - - - - - - - - - -
    20.03.2012
    Mgr_inz_rafal wyraził zgodę na upublicznienie wesji 2.1, więc zdjąłem blokadę (link powyżej).

    - - - - - - - - - - - - - - - - - - -
    27.03.2013
    Wersja 2.1 okazała się wadliwa (o czym niżej), więc teraz link wskazuje na poprawioną wersję 2.11.
  5.  
    Dzięki za zainteresowanie programem. Cieszę się, że gra się spodobała. Mi podobało się jej tworzenie, więc wszystko zadziałało jak należy :)

    Bluki, możesz spokojnie upublicznić nową wersję, nie mam nic naprzeciwko :) Widzę, że głównie zamieszałeś tu i ówdzie POKAmi, co zasadniczo nie zmienia logiki gry, więc nic się pewnie nie zepsuło.

    Chciałbym tylko, abyś zaktualizował plik README.TXT znajdujący się na dyskietce adekwatnie do zmian wprowadzonych przez Ciebie.

    PS. Sorry za zasilacz :)
    • 12: CommentAuthorBluki
    • CommentTime20 Mar 2012 zmieniony
     
    Krótko o zmianach wprowadzonych w wersji 2.1 i zaakceptowanych przez mgr_inz_rafala:

    1. Blokada klawisza BREAK.
    2. Naciśnięcie ESC na ekranie tytułowym powoduje opuszczenie gry do AUTORUN.BAS, a w przypadku jego braku do BASIC-a. Przerwanie rozgrywki również klawiszem ESC – ale to było już we wcześniejszych wersjach.
    3. „Miękkie” przejście między planszami. Ekran jest wyciemniany do poziomu tła, a nie wyłączany.

    Link do wersji 2.1 „Biednego Psa Antoniego” znajduje się dwa posty wyżej.
    • 13:
       
      CommentAuthorKaz
    • CommentTime20 Mar 2012
     
    Dodane do katalogu gier.
    • 14: CommentAuthorBluki
    • CommentTime23 Mar 2012 zmieniony
     
    Tak z ciekawości sprawdziłem ile zmiennych jest w grze. Jeśli się nie pomyliłem, to aż 93!
  6.  
    @Bluki,
    Całkiem możliwe... Nawet nie przyszło mi do głowy, żeby liczyć :) To pewnie efekt "rozpasania" przeniesiony z programowania na PC. Zaczynając prace nad gierką nie oszczędzałem na zmiennych, na numerach linii, starałem się pisać każdą instrukcję w osobnej linii, itp. Dopiero pierwsze spotkanie z Error 2 oraz kilka komentarzy bardziej doświadczonych osób na forum uświadomiło mi z jak zamierzchłych czasów pochodzi Atarynka :)

    Ale nie ma tego złego... Teraz robiąc proste, początkujące rzeczy w ASM zawsze się trzy razy zastanowię, zanim wykorzystam nowy bajt, zamiast upchnąć coś ponownie do któregoś z już wykorzystywanych :)
    • 16: CommentAuthorBrix
    • CommentTime23 Mar 2012
     
    E tam, bez obciążeń i ograniczeń basica to dopiero można pohulać ze zmiennymi. Sama strona zerowa to potencjalnie 256 szybkich zmiennych ;)
  7.  
    @Brix
    Ależ jakich ograniczeń? :-) Przecież to dopiero pisząc w ASM można się natknąć na "Branch out of range by $0002 bytes" :)

    A w BASICu stawiam GOTO dokądkolwiek i jestem twardziel :)
    • 18: CommentAuthorBrix
    • CommentTime23 Mar 2012 zmieniony
     
    Jeśli skok warunkowy jest poza zakresem i nie da się z tym nic zrobić, skocz w ten sposób przy wyjściu z pętli, by ominąć zapętlające jmp, które też skoczy dokądkolwiek :)
    • 19: CommentAuthormono
    • CommentTime23 Mar 2012 zmieniony
     
    Zamiast beq,bpl,bcc,itd. używaj odpowiednich makr jeq,jpl,jcc,itd. To zrobi kod (np. dla jeq gdzieśtam):
    bne *+5
    jmp gdzieśtam
    • 20:
       
      CommentAuthorbobikowoz
    • CommentTime26 Mar 2013
     


    Wykryłem błąd podczas zabawy, niestety było na żywo...
  8.  
    Uff, na szczęście to już po głosowaniu w KazKompo :)

    Dzięki za info - postaram się w rozsądnym czasie sprawdzić, dlaczego mu się pamięć skończyła. Nie trafiłem na taki błąd grając na prawdziwej Atarce.
    • 22:
       
      CommentAuthorbobikowoz
    • CommentTime26 Mar 2013
     
    Spoczko, mam nadzieje, że jak się kiedyś skuszę na zabawę z Gruczołem Grubasa, to nie będzie niespodzianek :P
    • 23:
       
      CommentAuthormgr_inz_rafal
    • CommentTime26 Mar 2013 zmieniony
     
    Bluki - wersja 2.0 się nie wykrzacza.

    W wersji 2.1, po Twoich lekkich zmianach, nie starcza pamięci aby przełączyć się na mroczne levele.

    Zerknij proszę, czy nie dasz rady czegoś z tym zrobić. Gra była wyliczona praktycznie co do bajta, więc jakaś jedna zmienna za dużo i mamy ERROR 2...


    PS. Jak szybko dojść do miejsca crashu? Na ekranie tytułowym wcisnąć START trzymając SELECT (mamy wtedy nieśmiertelność). Następnie przyspieszenie czasu w emulatorze i możemy jechać level za levelem.

    @bobikowoz
    A tymczasem polecam niezmodyfikowaną wersję 2.0 :) Obrazek końcowy jest warty przejścia całej gry, hehe :)
    • 24: CommentAuthorBluki
    • CommentTime26 Mar 2013 zmieniony
     
    Wersja 2.1 jest dłuższa od 2.0 o 175 bajtów. Wydawało się, że nie będzie problemu - a jednak. Dlaczego wcześniej, w testach, to nie wyszło i dlaczego u mnie działa bez problemu? Powód jest prosty. Ja używam MyDOS-a 4.50, a na ATR z grą jest DOS II+/D, który jest bardziej pamięciożerny. MyDOS pozostawia ok. 280 bajtów pamięci więcej...
    Rozwiązania problemu są dwa.

    1. Nic nie zmieniać w programie, tylko zastąpić DOS II MyDOS-em. Zaletą jest to, że MyDOS obok SDX jest najpopularniejszym DOS-em. Wadą, że trzeba pamiętać o włączeniu BASIC-a w emulatorze.

    2. Skrócić kod „Biednego Psa..”. Usunąłem więc tekst po REM w linii 1515 i... to wystarczyło. Na wszelki wypadek skróciłem też czołówkę REM (linie 0-6). Nie zmieniałem żadnych napisów. Nową wersję można rozpoznać po numerze ATR-a (2.11) lub dacie aktualizacji w linii 5. Teraz gra od wersji 2.0 jest dłuższa o 102B.



    Jako, że to Twój program, panie magistrze_inżynierze_rafale, to w Twoich rękach leży klucz do wersji, którą zechcesz upublicznić jako oficjalną.
    Byłoby też dobrze przetestować jeszcze grę na innym sprzęcie.



    Pozostaje tylko przeprosić wszystkich zainteresowanych za zamieszanie i dobrej zabawy!
  9.  
    Hej,
    To ja wybieram wersję "Biedny Pies Antoni 2.11.atr". Jest w załączniku.

    Przeszedłem raz i wygląda, że jest OK.

    Proszę o umieszczenie jej w katalogu oraz o usunięcie z niego wersji 2.1. Alternatywnie, dla potomności, można wersję 2.1 zostawić, ale opisać ją tak, żeby było wiadomo, że ma buga :)
  10.  

    Bluki:

    Pętla FOR-NEXT to nie najlepszy pomysł na wprowadzanie opóźnienia w Atari BASIC-u. Lepiej użyć timera. W systemie operacyjnym masz ich 5 (komórki pamięci 536 - 545).
    Sorry za odkopywanie tematu, ale właśnie przed chwilą znowu był mi potrzebny timer. Zajrzałem więc do kodu Biednego Psa, żeby sobie przypomnieć jak to było i zauważyłem, że z jakiegoś powodu przed ustawieniem timera 4 (czyli zapisem do 543 i 542) robię dodatkowo "POKE 66,1", a po zakończeniu odliczania "POKE 66,0".

    Czy ktoś może wyjaśnić, co mogło być powodem, że tak zrobiłem? :) Mapa pamięci łączy komórkę CRITIC z timerami, ale w sposób, którego nie rozumiem.

    A uogólniając pytanie: czy timer będzie mi dobrze działał bez zapisów do CRITIC? Wydaje się, że tak, ale wiadomo jak to w Atari... Nigdy nic nie wiadomo :)
    • 27:
       
      CommentAuthorjhusak
    • CommentTime23 Aug 2014 zmieniony
     
    Pojechałeś po bandzie, wyłączyłeś dodatkowe czynności, które przerwanie zwykle wykonuje, po to, aby zaoszczędzony czas przeczekać w pętli for-next.

    Ale człowiek uczy się przez całe życie. I gupi umiera.
    • 28:
       
      CommentAuthormgr_inz_rafal
    • CommentTime23 Aug 2014 zmieniony
     
    Kuba, dzięki za wyjaśnienie. Coś mi się jednak nie zgadzało, ale w końcu doszedłem co :) Krótko opiszę, a nóż ktoś kiedyś skorzysta.

    Zatem... Zdziwiła mnie trochę Twoja odpowiedź, gdyż byłem przekonany, że ustawienie CRITIC spowoduje, że między innymi TIMERy *przestaną* liczyć. Więc ta moja pętla FOR-NEXT powinna była się nie kończyć. Ostatecznie jednak okazało się, że przywracam CRITIC na 0 nie *po* zakończeniu odliczania, jak pisałem poprzednio, ale po ustawieniu timerów. Tuż przed FOR wstawiam tam 0 :)

    Ja już zrozumiałem o co chodzi :)

    Dalej jednak nie wiem, dlaczego w ogóle ruszam CRITIC (czyt.: z którego tutoriala to wziąłem). Jedyne uzasadnienie jakie przychodzi mi do głowy jest takie, że pomiędzy ustawieniem jednej i drugiej komórki timera może on "tyknąć" (zwłaszcza w powolnym BASICu), co mogłoby dać ponury efekt uboczny. Przynajmniej teoretycznie więc dobrą praktyką byłoby ustawianie CRITIC na non-zero na czas *ustawiania* timera.