atarionline.pl Taka tam nowa gra - 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: CommentAuthormono
      • CommentTime22 Oct 2011 17:10
       
      Nie możesz bazować na zawartości 1 sektora, bo tam może być wszystko. Loader, dos, czyste sektory, cokolwiek.
      Wartości nie da się wziąć - trzeba ją "odkryć" :D
      Jeśli korzystasz z AtariDOS et consortes (MyDOS, DOS XL), to można założyć, że spotkasz się z sektorami o rozmiarze 128 lub 256 bajtów. Innych te dosy nie potrafią obsługiwać.
      Ustawiasz się więc na sektorze 4 i czytasz bajt powyżej 128 (czyli o offsecie >= 128) - jeśli error 166 to masz sektor 128 bajtowy, wpp 256.
      • 2: CommentAuthorQTZ
      • CommentTime22 Oct 2011 18:10
       
      Jak rozumiem pierwsze sektory są zawsze określonej wielkości, co jest obsługiwane prze OS, a DOSy zapisują wielkość dalszych sektorów w sobie znanym miejscu?

      Ale z kolei np. gdy tworzymy atr'a możemy podać wielkość sektorów, nawet tych początkowych, więc już w "pustym" atr mamy te wartości zapisane, co z kolei sugeruje ich standaryzację(?).

      Zerknąłem na mój atr w edytorze hex i widzę, że faktycznie sektory są 128 Bajtowe, ale ostatnie 3 Bajty w każdym sektorze są używane przez system, stąd 125, podobnie przy 256 Bajtach dane zajmują 253 Bajty...

      Dzisiaj muszę już odpocząć :)
      • 3: CommentAuthormono
      • CommentTime22 Oct 2011 18:10 zmieniony
       
      Polecam ->link<- . Jest tam sporo informacji.
      Rozpoznanie gęstości w jakiej mamy zapisany dysk na żywym Atari nie jest prostą sprawą. Ja to robiłem ostatnio tak:
      1. Odczyt PERCOM przez SIO (w bloku danych jest kompletna informacja o rozmiarze sektora).
      2. Jeśli odczyt PERCOM się udał no to mamy co chcieliśmy.
      3. Odczyt sektora 4 przez SIO zakładając, że rozmiar sektora jest 256 (stacja XF551 będzie wtedy potrafiła odczytać sektory w DD i zwróci poprawny status).
      4. Odczyt statusu dyskietki przez SIO (w bitach 7 i 5 DVSTAT pojawi się informacja sugerująca rozmiar sektora).
      Twarde dyski i niektóre stacje dyskietek (TOMS, XF551) zazwyczaj obsługują PERCOM więc odpadają problemy z sektorami większymi niż 256b (których AtariDOSy nie potrafią obsługiwać). Jeśli napęd nie obsługuje PERCOM (starsze stacje dysków) to trzeba wnioskować po bicie gęstości rozszerzonej (7) i bicie gęstości podwójnej (5) DVSTAT.
      Ale to SIO. Natomiast mając tylko CIO (BASIC) trzeba kombinować z GETDISKINFO (jeśli DOS obsługuje) oraz DIR/POINT.
      • 4: CommentAuthorQTZ
      • CommentTime25 Oct 2011 01:10 zmieniony
       
      Wygląda na to, że to ja namieszałem :) Sprawdzałem numer pierwszego sektora z plikiem i skakałem o ilość sektorów zajmowanych przez plik, co oczywiście było błędne, bo gdy plik nie jest ciągły trafię na fragment innego pliku.
      Po poprawce nie odczytuję jednak wszystkich danych w każdym sektorze. Najpierw odkrywam :) wielkość sektora (-3), przy założeniu, że są możliwe tylko 128 i 256 Bajtowe, a potem skaczę na koniec sektora i pobieram 2 Bajty, co przenosi mnie na początek następnego, w ten sposób znajduję ostatni sektor należący do pliku, gdzie tym razem czytam kolejne Bajty, aż do końca.
      Zrezygnowałem z użycia rejestru na rzecz instrukcji Note. Mam nadzieję, że tym razem zrealizowałem to prawidłowo?

      120 COM FDIR$(18),ATTRIB$(1),FN$(15),TEMP$(2):ADRTEMP=ADR(TEMP$)
      210 PROC FILESIZE
      220 TRAP #ER:OPEN #4,6,%0,FN$:INPUT #4,FDIR$:CLOSE #4
      230 ATTRIB$=FDIR$:IF ATTRIB$<>" " AND ATTRIB$<>"*" THEN TRAP %0:FS=-%1:GO# QUITFS
      240 SECTORS=VAL(FDIR$(15,18)):IF SECTORS=%0 THEN TRAP %0:FS=%0:GO# QUITFS
      250 REM --
      260 OPEN #4,4,%0,FN$:NOTE #4,CURSEC,CURBYTE
      270 REM --
      280 IF SECTORS>%1
      290 TRAP #ER166:POINT #4,CURSEC,129:SECSIZE=253:GO# FINDLAST
      300 # ER166:IF ERR=166:SECSIZE=125:ELSE :GO# ER:ENDIF
      310 # FINDLAST:TRAP #ER
      320 FOR SECC=%2 TO SECTORS:POINT #4,CURSEC,SECSIZE-%1:BGET #4,ADRTEMP,2:NOTE #4,CURSEC,CURBYTE:NEXT SECC
      330 CURBYTE=%0:POINT #4,CURSEC,CURBYTE
      340 ELSE :SECSIZE=0:ENDIF
      350 REM --
      360 TRAP #EOF:DO :GET #4,JUSTGET:CURBYTE=CURBYTE+%1:LOOP
      370 # EOF:POP :IF ERR=136 THEN CLOSE #4:FS=CURBYTE+(SECTORS-%1)*SECSIZE:GO# QUITFS
      380 # ER:CLOSE #4:FS=-ERR
      390 # QUITFS
      400 ENDPROC

      W załączniku dwie dyskietki testowe 128 i 256, na każdej program jest w dwóch wersjach - z "debug print" i komentarzami (FS2.BAS) i bez (FS2CUT.BAS). Readme.txt jest tylko jako przykład!

      Mono, a co miałeś na myśli przez "metodę binarną"?

      Edit: UWAGA: TRAP #ER przeniosłem z linii 300, do 310 - teraz w razie błędu zadziała prawidłowo - dyskietek nie poprawiłem!
      • 5: CommentAuthormono
      • CommentTime25 Oct 2011 03:10
       
      Na pierwszy rzut oka program wygląda dobrze.
      Sprytny sposób przechodzenia na kolejny sektor pliku - i POPRAWNY. Ja już myślałem o czytaniu linku z sektora i wyciągania z niego nru pliku, co jest głupie bo zakłada że program działa w Atari DOS, a tak wcale nie musi być.

      Wyszukiwane binarne. W tym przypadku łatwo zastosować do odkrywania rozmiaru sektora, bo jak zażądamy bajtu, którego już w sektorze nie ma, to dostaniemy ERROR 166.
      Wyszukiwanie polega na dzieleniu podzbioru na połowę w każdym kolejnym kroku, aż osiągniemy podzbiór 1-elementowy i sprawdzania (w każdym kroku) czy znaleźliśmy żądany element. Tutaj polegałoby na ustawieniu się w połowie sektora i sprawdzeniu czy bajt znajduje się w sektorze. Błąd 166 sygnalizuje, że nie więc trzeba się ustawić w połowie połowy, itd. Jeśli jednak nie ma błędu oznacza to, że bajt jest w sektorze i trzeba ustawić się o połowę podzbioru wyżej i tak N kroków. N to log o podstawie 2 z max.ilości bajtów w sektorze jakiej się spodziewamy.
      Algorytm można łatwo zmodyfikować, bo rozmiary sektorów są raczej 128, 256, 512, 1024 itd. więc można żądać bajtów o offsecie 2^N-1 (N rosnące od 7) aż do chwili kiedy dostaniemy błąd 166. W 8 krokach możesz więc wykryć sektory do 32KB. Aktualnie największym rozmiarem używanym jest 512B (twarde dyski), ale to może się w niedalekiej przyszłości zmienić. Raczej można chyba założyć, że sektor nie osiągnie rozmiaru pamięci Atari :D. Nawet 32K jest już wielkością nieco abstrakcyjną, ale mogę sobie wyobrazić filesystem obsługujący sektory 16K z wykorzystaniem pamięci rozszerzonej pod kontrolą SpartaDOS X.
      • 6: CommentAuthorBluki
      • CommentTime28 Oct 2011 01:10
       
      No proszę, nie było mnie kilka dni, a tu już tyle ciekawych rzeczy się wydarzyło! Może powinienem częściej znikać?
      Co do TBL, to jestem świadomy tych błędów i... kilku innych :) jednak z konfrontacji czy poprawić TBL, czy napisać nową grę, jak na razie zwycięsko wychodzi ta druga opcja.
      „Niekonsekwencja – opis po angielsku, a komunikaty po polsku”.
      Cóż, to dosyć powszechne zjawisko:

      QTZ:

      Na koniec obszerny bug report...

      :)
      POKE 82,0 to nie błąd – celowo tak to ustawiłem. TBL został pomyślany jako program „ułatwiający życie” w czasie pisania gry, a nie aby uruchamiać gotowe programy, choć też może to robić.
      Hdv: instaluje sterownik H: na 6 stronie, umożliwiający wydruk listingu w trybie graficznym (czyli z oryginalnymi znakami Atari).
      Tur: włącza/wyłącza szybką transmisję ze stacji TOMS 720 (lub TOMS MULTI DRIVE).
      Mon, mlm: monitor OS QMEG v3 i monitor MLM, więcej na ten temat w opisie QMEG v.3.
      Co do obsługi błędów, to rzeczywiście nie działa w pełni poprawnie, ale też tego typu programu w BASIC-u nie da się całkowicie zabezpieczyć przed nimi. Na przykład polecenie załadowania nowego programu powoduje automatyczne usunięcie z pamięci starego (TBL).

      W cytowanym wyżej listingu jest polecenie TRAP %0, czyli „w razie błędu skocz do linii 0”. Domyślam się, że tu chodzi o wyłączenie TRAP. W BASIC-u prawidłowo powinno się użyć liczby >32767, np. TRAP 32768. Jeśli wyłączenie następuje kilkakrotnie w programie, to można użyć dodatkowej zmiennej, zwłaszcza, że zmienna ATTRIB$ wydaje się zbędna. Oto jak według mnie mogłoby to wyglądać na przykładzie linii 120 i 230.

      120 COM FDIR$(18), FN$(15), TEMP$(2) : ADRTEMP=ADR(TEMP$) : OFF=32768
      230 IF FDIR$(%1,%1)<>" " AND FDIR$(%1,%1)<>"*" THEN TRAP OFF : FS=-%1 : GO# QUITFS
      • 7: CommentAuthorQTZ
      • CommentTime28 Oct 2011 15:10 zmieniony
       
      Mono Myślałem o podobnym rozwiązaniu, nawet zrobiłem test :) (na razie na warsztacie). Odczytanie wielkości danych w ostatnim sektorze zajmuje średnio powiedzmy ok. 7-10 prób. Zastanawiam się jednak jak będzie to działało na prawdziwej stacji dysków, bo z tego, co pisał Bluki, zwrot błędu może trwać dość długo, zależnie od stacji, a dodatkowo skakanie w przód i w tył może być dla stacji bardziej męczące i czasochłonne, niż czytanie wprzód(?). Z tego, co widziałem w instrukcji do DOS3 przejście przez sektor wymaga przejścia na kolejne ścieżki, gdyż sektor jest wycinkiem dysku, więc tu głowica będzie "skakała" w przód i w tył.

      Czytając króciutki manual do Basic'a, nazwany szumnie "Atari Basic Reference Guide For Experienced Programmers" - znalazłem opis komendy OPEN, z którego wynika, że można otworzyć plik w trybie Append. Wtedy automatycznie zostanie wskazany EOF, wystarczy odczytać jego położenie :). Ten sposób ma jednak wadę - pliki są co prawda nie tknięte, ale obraz dyskietki musi być modyfikowany, dzieje się tak, gdyż instrukcja CLOSE zamykając plik zapisuje EOF, co w przypadku zabezpieczonego dysku trzeba obejść TRAP'em, gdyż CLOSE zwraca błąd 146 - "Function Not Implemented". Zapis zmienia datę pliku ATR, choć ten niczym się nie różni, a w przypadku SpartaDOS prawdopodobnie dodatkowo zostanie zmodyfikowana data utworzenia pliku na dyskietce. W tej metodzie przydaje się też ATTRIB$, bo plik musi być "UNLOCKED", jednak, gdy jest ustawiony "LOCK" i jednocześnie dyskietka jest zabezpieczona ta metoda nie zadziała, gdyż już samo OPEN zwróci błąd 167 - "File Locked", a odbezpieczyć pliku się nie da. Nadal trzeba znać też rozmiar sektora - aby obliczyć rozmiar danych w pozostałych zajmowanych przez plik sektorach. Nie wiem też jak "append" działa w innych DOS'ach, tak, więc ta metoda to chyba tylko eksperymentalnie, ale gdyby ktoś wyciągnął kod maszynowy, który jest wtedy wywoływany, to po usunięciu zapisu byłoby to bardzo użyteczne :). Przy OPEN, nie wiem jeszcze co daje trzeci parametr, który w przykładach zawsze jest równy 0? Zastanawiałem się też nad użyciem komendy STATUS, ale nie wygląda na zbyt użyteczną...

      Bluki, ATTRIB$, początkowo użyłem właśnie w celu pozbycia się tych (%1,%1)... Gdyby FS działał samodzielnie tak jak jest, to ATTRIB$ można oczywiście pominąć, ale jest to istotna informacja, gdyż jeżeli plik jest odczytany prawidłowo możemy sprawdzić czy jest zabezpieczony sprawdzając tylko tą zmienną, co może być potrzebne w dalszej części programu. Bardziej bezużyteczny jest Temp$, ale tu trzeba było jakiejś zmiennej użyć...

      O Trap pisałem już wcześniej - użycie %0 nie powoduje błędu przy renumeracji i nie wymaga wpisywania długiej liczby, podobnie jak użycie zmiennej :). Nie mam możliwości teraz tego sprawdzić, ale prawdopodobnie użycie innej wartości niż 0 (bez %) też spowoduje błąd, choć pewnie nie tak dziwaczny ;) Dobra by była wartość ujemna, ale pewnie nie można takiej wpisać? Z tego, co mnie uczyli to aby wyłączyć Trap wystarczy podać nieistniejący numer linii (a dla pewności spoza zakresu - tak jak proponujesz), więc tu trzeba pamiętać, aby takiej (0) linii nie było, ale chyba nie jest to nieprawidłowe? Bug w Basicu skutecznie odstrasza od tworzenia linii 0 i 1, więc na ogół je pomijam - bug polega na tym, że wpisanie komentarza skrótem (.) w linii bez numeru kasuje linię 0, bądź 1.

      Co ciekawe po wystąpieniu błędu 146 miałem błąd 12 - "Line Not Found" właśnie przy Trap %0, ale nie sprawdziłem, czy wystąpiłby przy innej wartości, a teraz zmieniłem już program i błąd ten nie występuje... miałem też wtedy przy dostępie do pliku wielokrotnie błąd 128 "Break Abort"...

      W powyższym programie znalazłem za to poważniejszy błąd związany z Trap #ER'em ;) - poprawiony w tekście.

      Bluki: POKE 82,0 to nie błąd - celowo tak to ustawiłem. TBL został pomyślany jako program "ułatwiający życie" w czasie pisania gry, a nie aby uruchamiać gotowe programy, choć też może to robić.

      POKE 82,0 oczywiście to nie błąd, ale taki program powinien być "przezroczysty" i zostawiać system w takim stanie jak go zastaje użytkownik, tak samo do testowania (a może właśnie przede wszystkim) mniej lub bardziej skończonego programu. Przecież nieukończona gra to tak samo program jak każdy inny skończony. Skąd TBL ma wiedzieć czy program jest skończony czy nie? Wyobrażam sobie, że w trakcie pisania TBL wyświetli mi komunikat - "Program ukończony - Odmawiam uruchomienia!!!" :)))

      Bluki: Co do obsługi błędów, to rzeczywiście nie działa w pełni poprawnie, ale też tego typu programu w BASIC-u nie da się całkowicie zabezpieczyć przed nimi.

      No tak, ale zostawienie pustego ekranu przy wyświetlaniu błędu to już lekka przesada...

      QTZ: "Niekonsekwencja - opis po angielsku, a komunikaty po polsku".
      Bluki: Cóż, to dosyć powszechne zjawisko:
      QTZ: Na koniec obszerny bug report...

      Faktycznie, ale głównie w komentarzach i opisach, a w programach trzymam się jednego języka... patrz np. Sumator2 :)))
      A serio, Sumator to "wewnętrzne narzędzie", a TBL mógłby być czymś więcej, więc wypadałoby, aby trzymał standard - najlepiej międzynarodowy ;)

      Od ostatniego posta dorysowałem też kilka figur :) Na razie ich nie umieszczam.
      Nie miało to nic wspólnego Bluki z Twoim zniknięciem, pojawiaj się jak najczęściej :)
      • 8: CommentAuthormono
      • CommentTime28 Oct 2011 19:10
       
      Po odczycie sektora ze stacji znajduje się od w buforze DOSa, a więc można sobie zmieniać wskaźnik w obrębie sektora do woli - nie nastąpi tu żaden przeskok głowicy i rzężenie stacji.
      • 9: CommentAuthorBluki
      • CommentTime28 Oct 2011 23:10 zmieniony
       
      Trzeci parametr w OPEN to wyrażenie pomocnicze, czyli dodatkowa informacja dla urządzenia zewnętrznego. Jeśli te urządzenie go nie potrzebuje, to zwyczajowo ustawia się na zero. Z tego parametru (określone wartości oczywiście) np. korzysta lub raczej korzystała drukarka Atari 820.

      Jeszcze o TRAP. Rzeczywiście, wyłączenie tej funkcji odbywa się poprzez wskazanie linii programu, której nie ma. Użycie jednak numeru z dopuszczalnego zakresu (0-32767) może wprowadzać w błąd kogoś, kto będzie ten program analizował, a może i Ciebie za kilka miesięcy...
      Dlatego lepiej (czytelniej) jest użyć TRAP 32768 lub TRAP 40000 lub jak wcześniej TRAP OFF, nawet jeśli jest mniej wygodnie.
      Poniższa linia jest poprawna w BASIC-u, ale ze względu na czytelność programu nikt nie użyje takiej składni.
      200 IF GOTO=100 THEN THEN=0:GOTO 1000

      Warto dodać, że TBXL, jak żaden inny BASIC pozwala na pisanie bardzo przejrzystych, czytelnych programów.

      QTZ:

      POKE 82,0 oczywiście to nie błąd, ale taki program powinien być "przezroczysty" i zostawiać system w takim stanie jak go zastaje użytkownik...

      Irytowała mnie konieczność wpisywania POKE 82,0 każdorazowo po przystąpieniu do pracy, więc przekazałem to zadanie TBL. Każdy program powinien na początku sam ustawiać standardowe podstawowe parametry, jeśli mają dla niego znaczenie, a w przypadku ich modyfikacji, w momencie zakończenia pracy (wyjście), przywrócić te ustawienia. Zauważ, że tak się dzieje we wszystkich moich grach.

      Co do rozpoznawania rozmiaru sektorów (i długości plików) to sądzę, że warto by było określić pewne założenia techniczne, i wymagania wobec użytkownika. Biorąc pod uwagę mnogość DOS-ów, napędów, to weryfikowanie wszystkiego i zawsze może być trudne.
      Na początek przyjmijmy, że użytkownik jest świadomy, iż stacja dysków, sam dysk i plik na dysku nie może być zabezpieczony przed zapisem, inaczej program nie będzie działał (lub niektóre jego funkcje).
      Jeśli za DOS domyślny przyjmiemy MyDOS lub inny zgodny ze standardem Atari, to mamy do wyboru sektory 128B lub 256B. Jeśli teraz plik nie będzie krótszy niż 126B, to identyfikacja staje się prostsza, na przykład:

      100 OPEN #%1,4,%0,"D:TEST.BAS"
      120 NOTE #%1,S,B:POINT #%1,S,125
      130 GET #%1,X,X:NOTE #%1,X,B
      140 IF X=S THEN ? "256B"
      150 IF X<>S THEN ? "128B"

      Oczywiście całkiem bez obsługi błędu się nie obędzie. Długość pliku w przybliżeniu można określić z danych przy nazwie pliku w katalogu dysku (ile zajmuje sektorów) . Wtedy można wykorzystać instrukcję BGET.
      • 10: CommentAuthormono
      • CommentTime29 Oct 2011 15:10 zmieniony
       
      Założenie, że program pracuje na Atari DOS (et consortes) a co za tym idzie, że rozmiar sektora jest albo 128 albo 256 bajtów jest złe, bo program nie będzie poprawnie działał z twardego dysku (IDE+, SIDE, IDEA, KMK/IDE, MIO i jeszcze jeden był, ale drogi i mało używany). Nie chodzi o to, żeby uwzględniać masę przypadków, ale żeby wypracować metodę uniwersalną (niezależną od DOSa) na obliczenie długości pliku. Poza tym co z DOSami 3, 4, XE?
      I niestety okazało się, że metoda z NOTE i POINT, po czym GET choć z założeń wyglądała dobrze, to w praktyce nie da się zastosować. Powodem jest to, że DOS po operacji POINT nie przesuwa wskaźnika dla operacji GET. Jedynym sposobem jest więc odczyt całego pliku.
      W załączniku jest procedura która to robi niezależnie od DOSa. Wykorzystuje na bufor odczytu stronę 4 (bufory kasetowy i dyskowy).
      Jako parametry do USR podaje się adres stałej z kodem programu (P), numer kanału IOCB (to ten sam co w GET/NOTE/POINT) i adres nazwy pliku (może być ADR("D:PLIK.EXT")). W wyniku wywołania USR dostajemy rozmiar pliku (tylko do 65534 bajtów). Jeśli plik nie istnieje, lub wystąpił błąd w trakcie odczytu zwracana jest wartość 65535.

      Edit: Zamiast mojej procedury można też użyć BGET, jak radzi Bluki. Czytać porcjami do bufora (np. na stronie 4) zliczając je, a z ostatniego odczytu (zakończonego błędem EOF - 136) pobrać ilość realnie odczytanych bajtów ostatniej porcji.
      • 11: CommentAuthorBluki
      • CommentTime29 Oct 2011 21:10
       
      Mono, co do DOS-ów 3, 4, XE, to raczej nie cieszą się znaczącą popularnością, ale masz rację. Nie używam HDD, więc nie wziąłem go pod uwagę. W tej sytuacji zamierzałem zaproponować jako rozwiązani procedurę w języku maszynowym, niezależną od DOS-a... ale mnie uprzedziłeś :)
      W BASIC-u problem uniwersalności pewnie też by się dało rozwiązać, ale byłoby to bardziej rozbudowane i mniej eleganckie, a co ważniejsze znacznie wolniejsze. I znowu potwierdza się teza o wyższości języka maszynowego nad BASIC-em :)
      A przy okazji: gdyby była taka potrzeba to mogę Twoją procedurkę L wykorzystać w swoim programie?
      • 12: CommentAuthormono
      • CommentTime29 Oct 2011 23:10
       
      Oczywiście, że można używać - po to została załączona :)
      Jeśli chodzi o rozwiązanie w BASICu - może byłoby i mniej eleganckie, ale potrafiłoby zwrócić rozmiar większy niż 65534, no i obsługę błędów TRAPem można by zrobić. USR niestety jest ogromnie ograniczone (część usprawnień dodałem w swoim niedokończonym BASX) - ograniczenia można by ominąć, ale procedurka nie zmieściłaby się w stałej tekstowej, a wykorzystanie zmiennej to marnotrawstwo.
      • 13: CommentAuthorQTZ
      • CommentTime7 Nov 2011 15:11 zmieniony
       
      Mono bardzo ciekawy ten projekt Basx. Patch działa z ROM w wersji REV2 i REV3 (na AOL są zrekonstruowane źródła wszystkich trzech wersji - chyba najnowsza wersja źródeł jaką można znaleźć). Sprawdzając Basx9 na jednej z nich uzyskałem kolorowe "krzaczki" po wpisaniu PLOT (chyba na REV3, ale nie jestem pewien, bo nie udało mi się tego teraz powtórzyć). Wpisanie czegokolwiek błędnego w trybie graficznym zawsze zawiesza Atari.

      Nie sprawdzałem na realnym Atari, ale tam też wersja ROM'u może się różnić. Myślę, że zamiast robić patch'a lepiej gdybyś oparł się na najnowszej wersji i zrobił samodzielny program (zrobienie własnego ROM'u też byłoby ciekawe, jednak zastosowanie ograniczone), który wyłączałby wbudowany Basic zastępując go swoim. A jeszcze lepiej gdybyś ulepszył Turbo Basic, lub dodał jego funkcjonalność do Twojego projektu poprawiając znane błędy i uzupełniając np. tak jak pisałem wcześniej aby Tekst korzystał z FCOLOR jako koloru tła ;)

      Kolejna sprawa, to to, że TB nie działa z MaxFlash'em, a w Basicu odpalonym z ATR'a (pod MF) pojawiają się dziury w pamięci (w górnym wolnym obszarze, co może być też przyczyną nie działania innych programów uruchamianych z ATR) - pisałem w tej sprawie do Stevena (twórcy MaxFlash'a), na razie nie odpowiedział. Więc może Tobie uda się coś z tym zrobić?

      Co do sprawdzania rozmiaru pliku to... jeszcze Twojego programu nie sprawdziłem. Myślę, że przydałby się jeszcze program do sprawdzenia rozmiaru wolnej przestrzeni na dyskietce :).

      Mam też pomysł jak można wykorzystać TBL, do tego (i nie tylko) przydałby się z kolei program uruchamiający standardowy Basic z ROM w którym byłby uruchamiany wskazany program z dysku. Np. gdyby w kodzie w jawny sposób była wpisana nazwa pliku, którą można by było zmodyfikować i wtedy wywołać program z Basic-a lub z DOS'a przy włączonym lub wyłączonym Basicu :) Co byłoby też bardzo użyteczne przy tworzeniu dyskietek z autorun (nie wymagałyby one włączenia Basic'a) pod dowolnym DOS'em. W tej chwili istnieje program BCOM (przy v2 jest oryginalna instrukcja i wcale nie tak trudno ją zrozumieć!, ta angielska w pliku tekstowym niestety wprowadza w błąd!), który dokleja swój kod do pliku bas (może go zabezpieczyć), który można następnie uruchomić z DOS'a (bez włączonego Basic'a). Tak przygotowane pliki działają również pod MaxFlash'em.

      Bluki co do TBL chodzi o to, że w wątku "Gry szerzej nieznane" został wywołany temat przepisywania programów z Bajtka - mam ich bardzo dużo (już sprawdzonych), ale nie miałem do tej pory żadnego programu, z którego można by było je przeglądać, gdyby TBL był w pełni sprawny i miał taki program do przełączania do Basica, można by było utworzyć dyskietkę dla każdego numeru Bajtka i tam umieścić pliki zawierające listingi (.lst/.tbl) i pliki .bas/.tb, które TBL automatycznie wczytywałby lub uruchamiał :) Więc gdybyś poprawił TBL byłby on bardzo użyteczny :)

      Co do Trap zrobiłem test i rzeczywiście wychodzi na to, że prawidłowo jest tylko powyżej dopuszczalnego maksymalnego numeru linii czyli np. 40000. W każdym razie ja od dawna używam 0 więc mi się nie pomyli ;)

      TRAP 0     po renumeracji* TRAP -0E-<8 ERROR 3
      TRAP 1 TRAP -1 ERROR 3
      TRAP 32767 TRAP -32767 ERROR 3
      TRAP 32768 TRAP 32768 -
      TRAP 40000 TRAP 40000 -
      TRAP %0 TRAP %0 -
      TRAP %1 TRAP %1 -
      TRAP 65535 TRAP 65535 -
      TRAP 65536 TRAP 65536 ERROR 3
      TRAP TOFF TRAP TOFF -

      *po renumeracji, gdy wskazywana linia nie istnieje

      Użycie %0, %1, %2, %3 przy skokach GOTO, GOSUB, również nie jest renumerowane - taki zapis jest traktowany jak zmienna (stała).
      Wartości spoza zakresu 0-65535 powodują błąd 3 po uruchomieniu programu.

      Bardziej zastanawiało mnie jak poprawnie wyjść z PROC, bo wpisanie EXIT PROC wychodzi, ale nie wraca do miejsca wywołania, a ENDPROC wpisany w środku procedury przy listingu wygląda nieelegancko stąd moje QUITFS.

      Nie wiem czy jest jeszcze sens kończyć mój program do sprawdzania rozmiaru pliku (jeszcze pewnie do niego wrócę), na razie zająłem się grą :)

      Dziś nowa wersja Kit'u - "64 Figury kit rev4" i co najważniejsze nowa działająca wersja gry - 64 Figury 1.0b. Lista zmian w pliku txt (obecny odt również zapisałem jako txt).

      Obliczenia da się uprościć, bo przy wyświetlaniu planszy liczone jest PZH i PZV, które następnie przeliczane jest na adres i przesunięcie. Zmian jednak trzeba by było dokonać również przy rysowaniu w trakcie gry i inaczej przekazywać pozycję.

      W czasie gry wg parametru SLOW figury są wyświetlane jak w oryginale, choć użycie maksymalnej prędkości wcale nie wygląda źle, nawet, jeżeli zamieniane figury są jednakowe - reakcję gry widać po kursorze.

      Błąd występujący po podaniu błędnego numeru stacji w przypadku nieodnalezienia poprawnej wersji gry omijam Trap'em - nie przeanalizowałem tego dokładnie więc może to być nie do końca prawidłowe.

      Teraz również można tworzyć dane z kolejnością wyświetlania figur.

      Losowanie animacji rozmieszczania figur jest dość prymitywne, więc może później dodam losowanie listy według której program będzie wybierał efekt wtedy za każdym uruchomieniem kolejność będzie inna, a animacje będą się powtarzać, ale cyklicznie, dopiero co 17 :)

      Niektóre figury są nadal do poprawki... ale teraz jest ich 192! i można ich dodać jeszcze więcej :) Edycja mimo że coraz bardziej wygodna nadal wymaga użycia zewnętrznego programu.

      Bluki, poprosiłeś abym dodał wpis odnośnie wersji - dodałem taki, który widać przez chwilę po uruchomieniu gry - komunikat zawiera numer wersji i mój wpis, info o oryginale jest przy tytule, więc nie widzę sensu go dublować. Ew. można dodać "na stałe" numer wersji przy tytule (pomijając wpis - info będzie tylko w listingu i pliku txt).

      Jakbyś mógł, to proszę zerknij na kod, szczególnie pod kątem uproszczenia obliczeń i poprawności poprawki błędu z "D#:" :). Oczywiście polecam też chwilkę pograć :)
      • 14:
         
        CommentAuthorKaz
      • CommentTime8 Nov 2011 15:11
       
      Dzieki panowie za merytoryczna dyskusje, milo sie to czyta.

      Pytanka mam dwa do QTZ:

      QTZ:

      W tej chwili istnieje program BCOM (przy v2 jest oryginalna instrukcja i wcale nie tak trudno ją zrozumieć!, ta angielska w pliku tekstowym niestety wprowadza w błąd!)


      Na czym polega ten blad? Jezeli w katalogu jest plik txt z tym bledem, to mozemy go skorygowac.

      QTZ:

      Bluki co do TBL chodzi o to, że w wątku "Gry szerzej nieznane" został wywołany temat przepisywania programów z Bajtka - mam ich bardzo dużo (już sprawdzonych), ale nie miałem do tej pory żadnego programu, z którego można by było je przeglądać,


      Nie rozumiem, o jaki program Ci chodzi? Do przegladania programow w TB na Atari czy pc?
      • 15: CommentAuthormono
      • CommentTime8 Nov 2011 23:11
       
      @QTZ: BASX jest niestety niedokończony, zabugowany jeszcze i odłożony (pojawiły się inne fajne projekty). Kilka założeń po fakcie okazało się niewłaściwych (np. trzymanie programu w pamięci pod ROM - lepiej trzymać tam samego BASXa, bo znaczenie mniej kłopotu z samym programem, zmiennymi itd.) tak, jak to jest w MultiBASICu.
      Rozszerzanie TBXL to zupełnie inna para kaloszy. Plan początkowy był taki, żeby pobawić się standardowym BASICem Atari, poprawić mu znane błędy i dać więcej pamięci do działania - a wszystko to zrobić w postaci nakładki na istniejący BASIC. Niestety interpreter jest napisany tak, że nie da się go połatać. Jego funkcje nie są wydzielone w podprocedury, które można by wywoływać ze swojego rdzenia, ale są jak gdyby jednym wielkim ciągiem instrukcji ze skokami. Dzięki temu mój BASX to w sumie przepisany i zmodyfikowany Atari BASIC. To powoduje, że założenia początkowe nie zostały spełnione i mocno zniechęciło mnie do prac :) No bo cały dowcip miał polegać na uwolnieniu pamięci pod ROMem (14 KB) i zrobieniu małej nakładki, która zastąpi tylko rdzeń BASICa, ale będzie korzystać z tego co już jest za darmo w ROMie.
      • 16: CommentAuthorQTZ
      • CommentTime14 Nov 2011 01:11 zmieniony
       
      @Kaz - dyskietka zawiera plik txt napisany przez Andreasa Kocha - jest tam błędna informacja o obsłudze plików .lst - zamiast tego program zabezpiecza opcjonalnie pliki bas i z tego co pamiętam dos zostaje odcięty, ale po resecie... sprawdzę i dam znać... Wersja 2 zawiera oryginalny czeski help. Co do uruchamiania 20-30% plików to u mnie uruchomiło wszystkie, które testowałem :) - nie jest to kompilator jak jest napisane w tutorialu na AOL, tylko program który włącza Basic i uruchamia w nim niezmieniony program (co kiedyś dopisałem w komentarzu) więc jeżeli coś nie będzie działało to sądzę, że odsetek będzie znikomy.

      TBL - Turbo Basic Loader - to program, który napisał Bluki i umieścił na dyskietce z kit'em (w mojej wersji też jest, minimalnie poprawiony). Chodzi o to, żeby do każdego numeru Bajtka zrobić dyskietkę z programami, którą będzie można przeglądać na Atari. Chodzi o pliki bas, tb, lst, tbl, txt i xex, a prawie wszystko to ma TBL Blukiego.
      • 17:
         
        CommentAuthorKaz
      • CommentTime14 Nov 2011 11:11
       
      Czy bylbys w stanie przygotowac nowy opis, ktorym mozna by zamienic stary?
      • 18: CommentAuthorQTZ
      • CommentTime16 Nov 2011 18:11 zmieniony
       
      Kilka słów o BCOM:

      Aby uruchamiać programy w Basic'u pod DOS'em lub TB (nie sprawdziłem z TB - mam nadzieję, że działa) można skonwertować BCOM'em prosty program:
      10 RUN"D:AUTORUN.BAS"

      Zapisać jako AUTORUN.SYS i już można uruchomić plik autorun.bas pod dowolnym DOS'em bez włączonego Basic'a.
      Podobnie, jeżeli chcemy uruchamiać inne pliki, wystarczy tylko wpisać odpowiednią nazwę.

      BCOM wersja v2 różni się od v1 tym, że oprócz dołączonego opisu i małej zmiany przy dacie do utworzonego pliku dopisuje info, co demaskuje utworzony plik com.

      Tak jak pisałem BCOM odcina dostęp do DOS'a (dokładnie do urządzenia D:), ale dopiero po naciśnięciu przycisku reset, więc można korzystać ze stacji dysków, ale tylko przed resetem. Czy zabezpieczony plik przestanie czytać z D: po resecie (oczywiście w przypadku, gdy program ma się restartować)? - nie sprawdziłem. W każdym razie warto by było to poprawić.

      I tu prośba: Mono, czy podjąłbyś się poprawienia tego błędu?

      BCOM jest napisany w BASIC'u używa jednej procedury maszynowej i kilku wstawek, którymi uzupełnia konwertowany plik.
      Na potrzeby tłumaczenia z binarki "wyciągnąłem" jego listing, więc w razie potrzeby mogę go udostępnić.

      PS. Czekam na odpowiedź Koordynatora :) w sprawie 64 Figur 1.0b :) W ostatnich dniach rozbudowałem edytor figur, ale jeszcze sporo muszę zmienić... teraz chwilowo zająłem się tłumaczeniem BCOM :)
      • 19: CommentAuthormono
      • CommentTime16 Nov 2011 21:11
       
      Poproszę o pliczki.
      • 20: CommentAuthorQTZ
      • CommentTime17 Nov 2011 00:11
       
      Wysłałem na priv
      • 21: CommentAuthorBluki
      • CommentTime18 Nov 2011 00:11
       
      W sprawie 64 Figur 1.0b...
      No, no, całkiem dobrze to wygląda, zwłaszcza prysznic :)
      Teraz jest bardziej efektownie i szybciej. Przydało się też uzupełnienie opisu gry. Bym tylko usunął z zestawu znaków logo Atari i tak można je wszędzie zobaczyć, więc jeszcze w grze (co gorsza w poziomie x-3), to wydaje mi się, że trochę za dużo. Poza tym (mimo wszystko) jest to znak zastrzeżony . A jak jesteśmy przy poziomie x-3, to przy niektórych znaczkach można niemal oczopląsu dostać :), ale jest dobrze - gra nie powinna być zbyt łatwa.
      Trochę zmieniłem procedurę wyświetlania info o nowej wersji. Wydaje mi się, że tak jest lepiej, chociaż procedura jest dłuższa (linie 1031-1131 i 2601-2661).
      Co było nie tak, w jakich okolicznościach z PROC OTWORZ, że dodałeś w linii 18181 TRAP? Z moich testów wynika, że jest to zbędne.
      I tak na koniec: „stare” nazwy procedur i odwołań są w j. polskim. Może dla zachowania lepszej czytelności warto być konsekwentnym przy wprowadzaniu nowych, np. #WER zamiast #VER.

      Bardziej zastanawiało mnie jak poprawnie wyjść z PROC, bo wpisanie EXIT PROC...


      1000 PROC nazwa
      {coś tam}
      1100 IF war then GO#END_PROC
      {coś tam}
      1500 #END_PROC
      1510 ENDPROC
      • 22: CommentAuthorQTZ
      • CommentTime22 Nov 2011 15:11 zmieniony
       
      Za dużo Atari w Atari? OK w następnej wersji będzie mniej. Ale, że jest to znak zastrzeżony? - Przecież to Atari!

      Część "figur" pochodzi z innych gier, a część luźno do nich nawiązuje, prysznic jest nawiązaniem do wannolotu z komiksu Tytus Romek i A'Tomek (choć każdy może pomyśleć co innego, np. że jest to nawiązanie do Jet Set Willy), jest też kilka innych "znaków" w tym jeden z moim wpisem. Umieściłem takie, aby była większa różnorodność i myślę, że fajnie grając zauważać takie smaczki :). Np. czy zauważyłeś figury nawiązujące do gry Super Cobra? Niektóre figury nie są odpowiednio wyśrodkowane, co pamiętam, poprawić w kolejnej wersji.

      We wcześniejszej, roboczej wersji wśród "animacji" była rysująca znak Atari, ale w rozdzielczości 8x8 nie wyglądało to najlepiej i została zastąpiona inną - postanowiłem nie robić animacji rysujących konkretne obrazki, bo szybciej się nudzą :). Choć z drugiej strony można napisać procedurę zamieniającą dane figur na dane animacji (np. co drugą linię) i wtedy będą dodatkowe 192 animacje wyświetlane w podobny sposób... nie! :). Brakuje też wspomnianego efektu "random".

      Błąd w programie 64 figur występuje wtedy, gdy uruchomiony plik ma niewystarczającą ilość danych (np. zostanie zapisany przez SAVE bez danych, lub jest uszkodzony - za krótki, gdy jest uszkodzony, a danych jest wystarczająco gra może się zawiesić, lub wyświetlać przesuniętą grafikę, ale tym przypadkiem nie będziemy się zajmować), lub gdy błędny plik zostanie wskazany - np. gdy uruchomimy poprawną wersję z D2:, a wskażemy D1:, gdzie znajduje się wersja uszkodzona. Wynika to z braku obsługi takiej sytuacji, to znaczy przy otwarciu pliku "zastawiany" jest TRAP do #BLAD_OTWARCIA, plik zostaje otwarty, więc TRAP ciągle wskazuje linię 18181, wtedy program wychodzi z pętli REPEAT-UNTIL i odczytuje dane, które kończąc się powodują błąd i program wpada w środek pętli REPEAT. Podanie jakiegokolwiek numeru dysku powoduje błąd, bo następnie interpreter trafi na UNTLI bez wcześniejszego REPEAT.

      Zwróć uwagę, że gdy poprawny plik jest na innym dysku też nie jest dobrze, bo gdy program nie znajdzie pliku - TRAP zostanie wykorzystany i program zostanie odbezpieczony - w tym momencie można go zatrzymać przez Control+3, stąd ulokowanie TRAP właśnie w linii 18181 i skierowanie go na początek pętli REPEAT.

      Podsumowując - przydałoby się dodać obsługę błędu "plik gry jest uszkodzony, wskaż poprawny plik" (obecny komunikat jest mylący), TRAP, który dodałem powinien zostać w tym miejscu, ale mógłby wskazywać inną linię i nie byłoby wątpliwości.

      Co do testów z TRAP, RENUM i instrukcjami skoków to sprawdziłem jeszcze, że można podać numer linii jako hex, czyli np. TRAP $0 i renumeracja zadziała prawidłowo, co również ciekawe nie można wpisać numeru linii w hex np. "$A REM LINIA 10".

      Co do "wersji" to tak wygląda lepiej (pierwotnie zrobiłem podobnie) jednak dopóki komunikat nie zniknie nie można uruchomić gry... Dlatego usuwałem szybciej i przed mignięciem ramki.

      Podobnie w czasie gry w trakcie rysowania figury nie działa sterowanie, teraz można to poprawić - gdy gracz będzie ruszał się zbyt szybko można wyświetlić resztę figury w całości (bez podziału na linie).

      Zauważyłem też, że czasami kursor "przykleja się" do ostatnio wybranej figury (po jej przestawieniu) - w Twojej wersji tego nie zauważyłem, ale może grałem zbyt krótko(?), bo niczego w sterowaniu nie zmieniałem.

      Mam zastrzeżenie co do "podpowiedzi" na poziomie "gamma", bo gdy figura znajdzie się w odpowiedniej kolumnie i wierszu to wartości "kolumna" i "wiersz" zostają zmniejszone. Rozumiem, że chciałeś, aby kolor podpowiedzi odpowiadał kolorom "podświetlenia" w trybie "alfa", ale jest to mylące i myślę, że trzeba liczyć też te ustawione, tak, aby pod koniec mieć 64x64 :). Ewentualnie mógłbym rozszerzyć procedurę wyświetlającą figury, tak, aby tło było dwukolorowe np. po przekątnej.

      Co do nazw to VER wydaje się bardziej oczywiste, niż WER. To drugie kojarzy mi się z "wersem". Ja jestem za VER, ale to szczegół - można zmienić, choć po polsku lepiej brzmiałoby całe słowo, stąd skrót angielski. Użyłem też SHIFT i pewnie jeszcze czegoś... wpisuję nawy tak jak mi się kojarzą i jak jest krócej, SHIFT wpisałem za tym jak nazwałem to w wywołaniu procedury, gdybym to zmienił myliłoby mi się. Wśród Twoich nazw też nie wszystkie są do końca polskie - dopisek H, czy V - H sugeruje horyzont, ale V - "vertical". Mimo wszystko łatwiej jest gdy zmienne są nazwane tak, aby rozumieć ich znaczenie, co często jest trudne, nawet jeżeli są nazwane w zrozumiałym dla nas języku (a co dopiero gdy są w niezrozumiałym). Np. SLIM nazwałem wskaźnik do danych animacji - "ślimaków" - mógłbym zmienić na ANIM ...w końcu ślimak to też "animal" :).

      Gorzej, że nie przeanalizowałem jak działa ZNACZNIK, a z pobieżnego rozpoznania wynika, że jest on używany do określenia pozycji figury. Myślę, że gdyby zmienić sposób przekazywania pozycji figury można by zaoszczędzić czas na obliczaniu PZV i PZH, a potem na Bajt i przesunięcie, jednak oprócz zmian przy wyświetlaniu planszy trzeba wprowadzić zmiany przy rysowaniu w czasie gry, tak, aby w obu przypadkach dane pozycji miały jednolity charakter, np. numer pozycji (0-63 czy 1-64), który zostanie już tylko zamieniony na Bajt i przesunięcie.

      "GO#END_PROC" - czyli dokładnie tak jak zrobiłem, tylko u mnie było "#QUITFS" :). Ale czy w związku z tym wpisanie ENDPROC kilkukrotnie w procedurze jest błędne? Czy tylko nieeleganckie?

      Wracam do BCOM'a :)
      • 23: CommentAuthorBluki
      • CommentTime25 Nov 2011 01:11
       
      Błąd w programie 64 figur występuje wtedy, gdy uruchomiony plik ma niewystarczającą ilość danych...

      Tak, ale są to sytuacje niedozwolone. Jeśli ktoś nieprawidłowo korzysta z programu to może on źle działać. Nawet w wielu grach profesjonalnych, które coś dogrywają z dysku, gdy podniesiemy dźwignię w stacji to taka próba doczytania zwykle kończy się „sieczką” na ekranie lub zawieszeniem komputera.
      Uznałem, że przed takimi sytuacjami nie ma potrzeby stosowania zabezpieczeń. Skoro jednak już jest, to dobrze. Po prostu program w pełni „idiotoodporny” to konieczność poświęcenia większej ilości czasu, którego (jak wiadomo) nie ma zbyt dużo, na hobby.

      Zauważyłem też, że czasami kursor "przykleja się"...

      Sterowanie nie zmieniło się, ale sposób rysowania tak. U mnie figura zawsze jest odtwarzana piksel po pikselu z danych w pamięci, więc kursor ulega „zatarciu”.

      Mam zastrzeżenie co do "podpowiedzi" na poziomie "gamma"...

      Dodatkowa informacja to ile figur jest tylko we właściwym wierszu (ale w złej kolumnie) i ile figur jest we właściwej kolumnie (ale w złym wierszu). Resztę widać na ekranie (figury ustawione, są widoczne na planszy poprzez zaznaczenie odpowiednim kolorem, analogicznie te nie na swoich miejscach). Zachowana jest logiczna zgodność z poziomem „alfa”, a równocześnie nie jest zbyt prosto. Ten poziom z założenia jest najtrudniejszy i wymaga dodatkowego „główkowania”. To, że może to być mylące, to dobrze, ma być trudno! Jeśli Cię nie przekonałem, to rzecz jasna możesz to zmienić. W końcu to Twoja wersja, ja tylko wyrażam swoją opinię :-)

      Co do nazw to VER wydaje się bardziej oczywiste, niż WER.

      Chodziło mnie tylko o zachowanie spójności w nazewnictwie procedur (PROC nazwa) i skoków (#nazwa), niekoniecznie zmiennych. Wydaje mi się, ze tak byłoby przejrzyściej, ale nie ma to większego znaczenia.

      Gorzej, że nie przeanalizowałem jak działa ZNACZNIK...

      Z tymi zmianami, to trzeba ostrożnie. Czasami drobna zmiana może uruchomić lawinę...
      Cod numeracji pozycji od 0 czy 1, to jest z tym problem. Zmienna tekstowa zaczyna się od 1, a wszystko inne praktycznie od zera. Nie znaczy to oczywiście, że nie da się tego znormalizować. Może to jednak spowodować, wbrew pozorom, dodatkową komplikację.
      Co do optymalizacji algorytmów i ich przyspieszania, to warto zawsze zadać sobie pytanie „czy warto” (wiadomo przecież, że każdą procedurę da się zoptymalizować – patrz słynny „dziesbin” z „Tajemnic Atari”) . Czy szybsze wykonanie będzie zauważalnie szybsze i czy jest ono (przyspieszenie) potrzebne. Jeśli procedura działa wystarczająco szybko, jak na nasze potrzeby, to po co ją zmieniać? To tak teoretycznie.

      "GO#END_PROC" - czyli dokładnie tak jak zrobiłem...

      Wielokrotne „ENDPROC” jest nie tylko nieeleganckie. Dla interpretera jest do przyjęcia, ale przypuszczam, że kompilator „zgłupieje”.
      Generalnie zasada jest taka, że PROC jest początkiem procedury, a ENDPROC jej końcem, czyli te instrukcje wyznaczają ramy, wewnątrz których znajduje się treść procedury. Takie wielokrotne użycie ENDPROC może być mylące, podobnie jak wcześniejszy mój przykład:

      200 IF GOTO=100 THEN THEN=0:GOTO 1000

      Jest poprawny pod względem składni BASIC-a, ale...
      Zauważ też, że przy listowaniu TB automatycznie uwypukla pętle. Takie dodatkowe ENDPROC zakłóci ten proces. Nie tylko będzie to wyglądać brzydko, ale może utrudnić odnalezienie ew. błędu. W Turbo BASIC-u niemal zawsze można instrukcję skoku zastąpić pętlą warunkową. Oto wcześniejszy przykład z taką pętlą. Wystarczy tylko odpowiednio ustawić warunek.

      1000 PROC nazwa
      {coś tam}
      1100 IF RYBA=KARP
      {coś tam}
      1500 ENDIF
      1510 ENDPROC
      • 24: CommentAuthorQTZ
      • CommentTime14 Mar 2012 23:03 zmieniony
       
      "Kursor się przykleja" - zmieniłem tylko *metodę* rysowania figur, kursora nie ruszałem - tu też zostanie zamazany. Program który odpowiada za rysowanie figur daje efekt *identyczny* z v.1, więc różnice w użytej metodzie nie powinny mieć znaczenia dla pozostałej części programu, no chyba, że któreś ze zmiennych muszą mieć konkretne wartości po narysowaniu figury, ale tego się nie dopatrzyłem. Tu występuje inny problem - kursor "przykleja się" w sensie, że gdy wybiorę figurę i zamienię z inną od razu mam ją zaznaczoną - jakbym nacisnął fire! I tak dopóki nie trafię na właściwe miejsce - wtedy wskaźnik zostaje uwolniony. Zdarzyło mi się to kilka razy, chyba na poziomie gamma... szkoda, że nie zrobiłem zrzutu pamięci... a może to "błąd" emulatora - np. autofire się włączyło ;) ...ale trochę dziwne, że wyłaczało się po znalezieniu właściwego miejsca...


      Hej Bluki, Kaz, czemu "zapomnieliście" o wersji "b"? Przecież w regulaminie KazKompo nie jest powiedziane, że gra musi być wyłącznie w Turbo Basic'u?

      Dla przypomnienia nowsza wersja "b" bazująca na "bx":
      Zmiany:
      - usunięte logo Atari (zgodnie z prośbą)
      - piktogram z moim logo można zobaczyć wyłącznie w "sdk"
      - dodane nowe "figury"
      - wymieniony pogram maszynowy - zminimalizowane obliczenia w Basic'u (procedura w wersji jakiej użyłem w Computer Inhabitants)
      uwaga: fremap z "sdk" ciągle używa starszej wersji
      - fremap umożliwia prostą edycję figur - mirror, przesuwanie
      uwaga: zmiany są zapisywane wyłącznie w plikach wyjściowych!
      • 25: CommentAuthorMaciek
      • CommentTime15 Mar 2012 00:03 zmieniony
       
      Łał, jakoś uciekł mi wątek z tą produkcją, bardzo mi się podoba :) Nota bene uciekły mi wszystkie gry z tego roku, dobrze, że w nowince jest podsumowanie 2011, inaczej natrafiałbym na te perełki przypadkowo przy odgrzebywaniu starych postów i połowę przegapił.
      • 26:
         
        CommentAuthorKaz
      • CommentTime15 Mar 2012 16:03 zmieniony
       

      QTZ:

      Hej Bluki, Kaz, czemu "zapomnieliście" o wersji "b"? Przecież w regulaminie KazKompo nie jest powiedziane, że gra musi być wyłącznie w Turbo Basic'u?


      Pytanie jest skierowane do mnie, ale trudno mi odpowiedziec na to pytanie, bo ja w tym roku w ogole nie kolekcjonowalem gier do KazKompo, nie sledzilem co i jak powstaje i kiedy. Wszystkie problemy spadly na Xeena (i jestem mu wdzieczny, ze sie tym zajal). A niestety, wiele przypadkow gier Atari jest niejasnych - albo co do faktu jej ukonczenia albo co do daty publikacji i Xeen mial i ma duzo "orzechow do zgryzienia".

      Zapewne Xeen bedzie w stanie precyzyjniej odpowiedziec Ci na pytanie, ja moge tylko przypuszczac. Wydaje mi sie, ze w tym przypadku chodzi o to, ze dopoki autor nie uzna, ze gra jest gotowa albo nie ma tego jakis jednoznacznych oznak, to jest podejrzenie, ze wciaz beda prace nad gra. Twoje poprawki do gry wciaz sa robione, tak?
      • 27: CommentAuthorQTZ
      • CommentTime15 Mar 2012 20:03 zmieniony
       
      Wersja "b" była gotowa w listopadzie 2011, jedynym zastrzeżeniem, jakie miał Bluki było usunięcie znaku Atari, teraz ponieważ zauważyłem, że pominęliście tę wersję, a jest to przecież kolejna wersja tej samej gry - moje poprawki dotyczą jedynie sposobu wyświetlania i zapisu figur, więc nie jest to nowa gra i nie zawłaszczam sobie jej autorstwa, więc nie rozumiem dlaczego nie umieścić jej razem z wersją 1.0, co przecież wyjdzie tylko na dobre.

      Co do zakończenia prac to nigdy program nie jest w tym sensie skończony, bo zawsze może okazać się, że coś jest do poprawienia. Pierwsza wersja wyszła w 2011 i to jest data publikacji. Nie wyobrażam sobie żeby np. gdy ogłoszę, że nie będzie dalszych prac nad programem, że ta gra weźmie udział w kolejnym KazKompo jako nowy produkt, bo jakich poprawek bym ja, czy autor nie zrobił to nie będzie to nowa gra. No chyba, że będziemy co roku ją "wydawać" zmieniając tylko zestaw figur ;)

      Np. pisałem o błędzie dotyczącym kursora - prawdopodobnie występuje on również w pierwszej wersji. Dziś znowu podczas testu udało mi się go uzyskać - tym razem zrobiłem zrzut pamięci. (Kursor można "uwolnić" ruszając joystick'iem w trakcie rysowania figury, lub przez jej poprawne ustawienie.)
      • 28: CommentAuthorBluki
      • CommentTime15 Mar 2012 21:03 zmieniony
       
      Ja też odniosłem wrażenie, że gra jest jeszcze w fazie "produkcji". QTZ, nie podałeś (może coś przeoczyłem?), że jest już wersja (i która) ostateczna/końcowa/oficjalna.
      Jednak tak jest chyba lepiej. Dwie bliźniaczo podobne gry w jednym konkursie... "Bratobójcza" walka nie wyszłaby żadnej wersji na dobre, tak mi się wydaje.

      Ooo! Dwa posty prawie w tym samym momencie :)

      Wersja "b" była gotowa w listopadzie 2011

      No tak, ale nie pamiętam, aby było powiedziane, że jest to wersja oficjalna. Uważałem ją za roboczą. Domyślam się, że Xeen też tak przypuszczał.
      • 29: CommentAuthorQTZ
      • CommentTime15 Mar 2012 21:03 zmieniony
       
      Za rok tej gry nie wystawię, to nie ma sensu - ta wersja to taki plusik. Nie ma tu "bratobójczej" walki.

      Co do zakończenia prac to wersja "b" była taką ostateczną, ale ponieważ miałem usunąć to logo... i ciągle jest ten błąd z kursorem... Bluki, może zauważysz co się dzieje...
      • 30: CommentAuthorBluki
      • CommentTime15 Mar 2012 21:03
       
      Jeśli gra będzie spełniać warunki KazKompo, to sama się wystawi :)
      W wolnej chwili rzucę okiem na ten błąd.
      • 31: CommentAuthorQTZ
      • CommentTime15 Mar 2012 21:03 zmieniony
       
      (Dopisałem powyżej i przeniosłem, bo pojawił się kolejny post)

      Byłby to plagiat.

      Jeżeli nie masz nic przeciwko, myślę, że można dodać info przy wersji 1.0 i dodać link do wersji "b", bo chyba byłoby szkoda aby przepadła. Głosujący głosowaliby na tytuł, a nie na konkretną wersję.
      • 32: CommentAuthorBluki
      • CommentTime15 Mar 2012 22:03
       
      No dobrze, jak już wnikamy w szczegóły, to jak kiedyś napisałem, na podstawie moich gier można tworzyć własne wersje, pod warunkiem podania źródła inspiracji. Wer. "b" spełnia te kryteria.
      Można powiedzieć, że obecnie gra "64 figury" objęta jest licencją Copyleft.

      A link na pewno nie zaszkodzi, jeśli zostanie uzupełniony uwagą, że jest to wersja wykonana przez Ciebie (czyli nie jest to oryginalna mutacja).
      • 33: CommentAuthorQTZ
      • CommentTime16 Mar 2012 13:03 zmieniony
       
      Ja od momentu, kiedy moje próby (na początku był to zupełnie oddzielny program testowy) zaczęły przynosić akceptowalny rezultat prosiłem, żebyś sam modyfikował program gry, zmiany są przecież niewielkie i pewnie sam mógłbyś to zrobić. Jak zrozumiałem, z braku czasu podjąłeś się roli koordynatora, więc trochę mnie dziwi, że teraz tak zupełnie się od tej wersji odcinasz. Ale skoro taka Twoja wola to niech tak będzie - poproszę o dodanie info i linka. Uważam, że gracze powinni mieć możliwość zapoznania się z przyspieszoną wersją, co być może podniesie ocenę Twojej gry. Robiąc poprawkę sporo się nauczyłem, a gra moim zdaniem zyskała. Jeżeli coś Ci w niej nie pasuje możesz przecież zgłosić swoje uwagi, a ja postaram się dostosować, np. usunąć lub zmodyfikować dodane figury, sam też możesz robić poprawki do wersji "b". Ja jak znajdę czas chciałbym dodać pełną funkcjonalność do edytora figur, a ponieważ nie jest on częścią gry i w tym przypadku ja jestem autorem, to nie podlega to tej dyskusji.

      Warto zobaczyć dyskusję na początku tego wątku - poruszana była sprawa prawa autorskiego i powolności gry :) Była też propozycja przepisania kodu na inny język.

      Zastosowanie kodu maszynowego zaproponował Ś.P. Zza_parawanu i jego pamięci dedykuję to rozwiązanie.

      Myślę, też że warto dodać dział w którym byłyby umieszczane użyteczne procedury maszynowe wywoływane z Basic'a. W tym wątku znajduje się procedura napisana przez Mono pod nazwą "L", która sprawdza wielkość pliku i ona powinna tam trafić.
      • 34: CommentAuthorBluki
      • CommentTime17 Mar 2012 00:03
       
      Chwila, chwila, czegoś tu nie łapię.

      QTZ:

      ...więc trochę mnie dziwi, że teraz tak zupełnie się od tej wersji odcinasz.

      Mnie się wydaje, że wręcz przeciwnie. Gdybym chciał się odciąć, to zrobiłbym to tak jak Michael Ende w przypadku filmu „Niekończąca się opowieść” Wolfganga Petersena. On nie akceptując odstępstw od powieści zażądał usunięcia swojego nazwiska z filmu.

      Uważam, że gracze powinni mieć możliwość zapoznania się z przyspieszoną wersją

      Też tak uważam, więc w czym problem. W każdej chwili możesz oficjalnie opublikować swoją wersję. Moją zgodę na to przecież masz. Jak chcesz, umieść obie wersje na jednym dysku ATR, tak jak ja robiłem to z grami w wątku „Gry szerzej nieznane” i tak opublikuj.

      Robiąc poprawkę sporo się nauczyłem, a gra moim zdaniem zyskała. Jeżeli coś Ci w niej nie pasuje możesz przecież zgłosić swoje uwagi, a ja postaram się dostosować

      Zgadzam się, że zyskała. Uwagi, jeśli miałem, to przecież zgłaszałem. Według mnie obowiązuje prosta zasada: twoje zmiany = twoja wersja = twoja odpowiedzialność za efekty. Ja mogę tylko doradzać, ale ostateczna decyzja należy do Ciebie. Podobnie jak w przypadku wersji „River Raid”, autorka współpracowała przy wersjach na inne komputery, ale kto inny to już firmował i decydował o ostatecznym kształcie.

      Chyba lepiej już tego nie wyjaśnię. Ja nie widzę tu żadnego problemu!

      Myślę, też że warto dodać dział w którym byłyby umieszczane użyteczne procedury maszynowe wywoływane z Basic'a.

      Bardzo by się przydał, ale kto ma to zrobić?
      • 35:
         
        CommentAuthorKaz
      • CommentTime17 Mar 2012 01:03
       
      Dodalem do archiwum gier.
      • 36: CommentAuthorQTZ
      • CommentTime17 Mar 2012 17:03 zmieniony
       
      @Bluki, jesteś autorem 64 Figur, więc nawet poprawiona wersja jest Twojego autorstwa (wyłączając modyfikacje) i nie powinna być ona konkurencją samą dla siebie, a jedynie uzupełnieniem-usprawnieniem. Nie mógłbym wystawić tej gry jako swojej, bo zrobiłem tylko wstawkę w assemblerze, no chyba, że w konkursie poprawek, a takiego przecież nie ma, zrobiłem tę poprawkę, aby rozwinąć istniejącą wersję, a nie po to żeby z nią startować w konkursach. Oczywiście program maszynowy może funkcjonować niezależnie od gry i w takiej formie jestem jego autorem. Jak już wspomniałem mógłbyś go wstawić samodzielnie, a tylko zaznaczyć, że użyłeś procedury CH2G4. Gdyby był to port na inną platformę (napisany od początku) to napisałbym "na podstawie gry... napisanej przez...", a sam byłbym autorem, a tak jest to ta sama gra ze zmienionym podprogramem rysowania figur, dodatkowymi figurami i animacjami przy wyświetlaniu i tylko to jest mojego autorstwa. A co by było gdyby ktoś zaproponował, że napisze muzykę do Twojej gry? Czy też musiałby wypuścić swoją wersję jako osobną grę?

      Ale skoro zgodziłeś się na umieszczenie linka do wersji z poprawką ja też nie widzę problemu. Ciekawa wydaje mi się propozycja umieszczenia obydwu wersji na jednym dysku. A jak będziemy robili poprawki to trzeba będzie robić do obydwu wersji :)

      W kit'cie zostawiłem pliki do obydwu wersji, zrobiłem tak dlatego, bo uważam, że Twoje rozwiązanie jest bardzo ciekawe i jest najszybsze jakie funkcjonuje w czystym (Turbo) Basic'u, a w kolejnej wersji kit'u - w którym zrobiłem najwięcej zmian i dodałem nowe programy - zwiększyłem funkcjonalność niektórych narzędzi, które można wykorzystać do zbudowania plików również dla wersji 1.0.

      @Kaz, Bluki napisał:
      A link na pewno nie zaszkodzi, jeśli zostanie uzupełniony uwagą, że jest to wersja wykonana przez Ciebie (czyli nie jest to oryginalna mutacja).

      Więc rozumiem, że przy pliku z grą możesz dodać linka do wersji "b" z odpowiednim komentarzem.
      Np.: "w konsultacji z autorem powstała też niezależna wersja "b", modyfikacji dokonał QTZ" lub dłużej "w konsultacji z autorem powstała też niezależna wersja "b" wyświetlająca figury przy użyciu procedury maszynowej, zmieniony został sposób wyświetlania planszy i doszły nowe obrazki, modyfikacji dokonał QTZ".

      @Bluki, @Kaz, i @wszyscy czytający :)
      Bluki, zapytał:
      Bardzo by się przydał, ale kto ma to zrobić?

      Kolega Zza_parawanu pisał:
      Luźne skojarzenie: czy nie ma jakichś alternatyw dla PLOT, DRAWTO, etc? Można by napisać szybsze (może specjalizowane) procki maszynowe uruchamiane przez USR. Te domyślne są powolne chyba właśnie dlatego, że uniwersalne. Taka biblioteczka pomogła by autorom gier.
      (był to chyba jego ostatni post na AOL.)

      Myślę, że miał na myśli Kaza, który taki katalog może założyć i całą naszą społeczność, która takie podprogramy może tworzyć i kolekcjonować. Ja przyłączyłem się do prośby.
      • 37:
         
        CommentAuthorKaz
      • CommentTime17 Mar 2012 18:03
       

      QTZ:

      @Kaz, Bluki napisał: "A link na pewno nie zaszkodzi, jeśli zostanie uzupełniony uwagą, że jest to wersja wykonana przez Ciebie (czyli nie jest to oryginalna mutacja)."


      Nic takiego Kaz nie pisal i nie mam pojecia, o jaki link chodzi. Mam prosbe, zeby pisac jasno i na temat: a) co jest nie tak, b) jaki jest postulat zmiany na lepsze. Dlugie i wymagajace analizy sugestie, dodatkowo zagniezdzone w wypowiedziach innych osob, sa po prostu nieczytelne.

      O wersji b nie zapomnialem. Po prostu nie zauwazylem, ze zakonczyles prace nad taka wersja, zreszta nie tylko ja mialem taki problem, ale i Xeen i autor oryginalu Bluki, osoba najbardziej zainteresowana. Latwo takie cos przegapic, gdy trwaja prace nad gra, a nie jest wyraznie napisane, ze to "juz" i mozna gre umieszczac w archiwum.

      Proponuje sygnalizowac w bardziej wyrazny sposob, ze gra powinna byc umieszczona w archiwum. Mozna na forum. Ale aby miec 100% pewnosci - prosze o maila z plikiem.
      • 38:
         
        CommentAuthorKaz
      • CommentTime17 Mar 2012 18:03
       
      Acha, kwestie katalogu podprogramow poruszam w nowym watku:

      ->link<-
      • 39: CommentAuthorBluki
      • CommentTime17 Mar 2012 20:03
       
      Rzeczywiście, w niektórych przypadkach warto by było dodawać w katalogu gier komentarze, ale krótkie. Pozwoli to zorientować się "grzebiącym" w plikach co jest co.
      Na przykład tak jest teraz:


      64 Figury (source,rev4b).7z
      64 Figury 1.0b (p1).txt
      64 Figury 1.0b (p2) .txt
      64 Figury 1.0b.atr
      64 Figury.atr
      64 Figury.txt

      a tak może być z komentarzami (np. w kwadratowych nawiasach):

      64 Figury (source,rev4b).7z
      64 Figury 1.0b (p1).txt [QTZ]
      64 Figury 1.0b (p2) .txt [QTZ]
      64 Figury 1.0b.atr [QTZ]
      64 Figury.atr [original]
      64 Figury.txt [original]
      • 40: CommentAuthorQTZ
      • CommentTime18 Mar 2012 13:03 zmieniony
       
      @Kaz
      Kaz:
      Nic takiego Kaz nie pisal i nie mam pojecia, o jaki link chodzi.

      Ja nie napisałem, że Kaz tak napisał, tylko zwróciłem się do Kaza, że Bluki zezwolił na dodanie linka do wersji zmodyfikowanej przy wersji oryginalnej i to były słowa Blukiego patrz posty 31/2 i 32/2.

      Kaz:
      Dlugie i wymagajace analizy sugestie, dodatkowo zagniezdzone w wypowiedziach innych osob, sa po prostu nieczytelne.

      Staram się właśnie być precyzyjny i jak najdokładniej opisać problem.

      a) głosujący nie mają świadomości, że gra jest dostępna w wersji z "poprawką"
      b) aby się o tym dowiedzieli proszę o dodanie linka wg tego co napisał Bluki z komentarzem np. takim jak podałem wyżej (post 36/2).
      c) (uwagi) dodanie poprawki nie zmienia nic w głosowaniu bo głosujący głosują na tytuł (punkty za poprawkę trafiają na konto Blukiego)

      Zmodyfikowaną wersję zrobiłem, opublikowałem i zaznaczyłem, że jest to "działająca wersja" - jak napisałem później miałem usunąć tylko logo - ale skoro były wątpliwości trzeba było zapytać.

      Generalnie nie rozumiem problemu daty publikacji poprawek-uzupełnień, bo czy gdybym był autorem danej gry i wypuściłbym poprawkę po nowym roku to nie byłaby brana pod uwagę, bo gra wyszła w ubiegłym roku, a poprawka w tym?

      Edit:

      Skoro jest paczka ze wszystkimi plikami to ta wersja też mogłaby się tam znależć z rozróżnieniem wersji np. tak jak zaproponował Bluki, lub np. "[niezalezna]", i z informacją, że punkty trafiają na konto Blukiego, a modyfikacji dokonał niezależnie inny autor.

      PS. Linki do RiverRide2k11 nie działa, brak linka m.in. do Blob Hunt, czyżby była to gra komercyjna? ;)
      • 41:
         
        CommentAuthorKaz
      • CommentTime20 Mar 2012 17:03
       

      QTZ:

      Zmodyfikowaną wersję zrobiłem, opublikowałem i zaznaczyłem, że jest to "działająca wersja" - jak napisałem później miałem usunąć tylko logo - ale skoro były wątpliwości trzeba było zapytać.


      Nie QTZ, nie napisales nigdzie jako wersji, nad ktora zakonczyles prace czy jako tej, ktora uwazasz za zakonczona albo gotowa! Wrecz przeciwnie, wielokrotnie ZASUGEROWALES, a w niektorych miejscach WPROST napisales, ze bedziesz dalej prowadzil nad nia prace. Nie bylo wiec zadnych watpliwosci: gra byla w fazie roboczej. I dlatego zarowno Bluki, Xeen jak i ja nic nie wiedzielismy, ze to "juz".

      To sa fakty wziete z postow wyzej:

      a) 7 listopada 2011 roku opublikowales wersje 1.0b. A do tego nastepujace fragmenty mowiace o dalszych pracach:

      QTZ:

      Obliczenia da się uprościć, bo przy wyświetlaniu planszy liczone jest PZH i PZV, które następnie przeliczane jest na adres i przesunięcie. Zmian jednak trzeba by było dokonać również przy rysowaniu w trakcie gry i inaczej przekazywać pozycję.


      QTZ:

      Losowanie animacji rozmieszczania figur jest dość prymitywne, więc może później dodam losowanie listy według której program będzie wybierał efekt wtedy za każdym uruchomieniem kolejność będzie inna, a animacje będą się powtarzać, ale cyklicznie, dopiero co 17 :)


      QTZ:

      Niektóre figury są nadal do poprawki...


      QTZ:

      Jakbyś mógł, to proszę zerknij na kod, szczególnie pod kątem uproszczenia obliczeń i poprawności poprawki błędu z "D#:" :).


      QTZ:

      Czekam na odpowiedź Koordynatora :) w sprawie 64 Figur 1.0b :) W ostatnich dniach rozbudowałem edytor figur, ale jeszcze sporo muszę zmienić...


      b) na to Bluki odpisal Ci 18 listopada, a z tresci wynika, ze prace nad wersja wciaz trwaja:

      Bluki:

      Trochę zmieniłem procedurę wyświetlania info o nowej wersji. Wydaje mi się, że tak jest lepiej, chociaż procedura jest dłuższa (linie 1031-1131 i 2601-2661).


      c) 22 listopada odpowiadasz i dalej dajesz do zrozumienia, ze prace trwaja i trwac beda (i wcale nie tylko chodzi o logo Atari):

      QTZ:

      Za dużo Atari w Atari? OK w następnej wersji będzie mniej.


      QTZ:

      Choć z drugiej strony można napisać procedurę zamieniającą dane figur na dane animacji (np. co drugą linię) i wtedy będą dodatkowe 192 animacje wyświetlane w podobny sposób... nie! :). Brakuje też wspomnianego efektu "random".


      QTZ:

      Błąd w programie 64 figur występuje wtedy...


      QTZ:

      Podsumowując - przydałoby się dodać obsługę błędu "plik gry jest uszkodzony, wskaż poprawny plik" (obecny komunikat jest mylący), TRAP, który dodałem powinien zostać w tym miejscu, ale mógłby wskazywać inną linię i nie byłoby wątpliwości.


      QTZ:

      Podobnie w czasie gry w trakcie rysowania figury nie działa sterowanie, teraz można to poprawić - gdy gracz będzie ruszał się zbyt szybko można wyświetlić resztę figury w całości (bez podziału na linie).


      QTZ:

      Np. SLIM nazwałem wskaźnik do danych animacji - "ślimaków" - mógłbym zmienić na ANIM ...w końcu ślimak to też "animal" :).


      QTZ:

      Myślę, że gdyby zmienić sposób przekazywania pozycji figury można by zaoszczędzić czas na obliczaniu PZV i PZH, a potem na Bajt i przesunięcie, jednak oprócz zmian przy wyświetlaniu planszy trzeba wprowadzić zmiany przy rysowaniu w czasie gry, tak, aby w obu przypadkach dane pozycji miały jednolity charakter, np. numer pozycji (0-63 czy 1-64), który zostanie już tylko zamieniony na Bajt i przesunięcie.


      d) 25 listopada Bluki odpowiada na Twojego posta. I na tym sprawa stanela az 5 dni temu zaczales pisac "bylo gotowe, a nie zauwazyliscie". Nie, moim zdaniem OCZYWISTE jest, ze prowadziliscie rozmowe developerska, ze caly czas wprowadzane sa jakies zmiany (a nie tylko usuniecie znaczka Atari) i ze sprawa na razie stanela w miejscu. Nie mialem i nie mam zadnych watpliwosci co do tego, ze to wersja robocza. Jezeli tak nie jest - to trzeba to bylo wyraznie napisac, bo cala wczesniejsza tresc rozmow sugeruje co innego.

      5 dni temu napisales, ze jest to wersja gotowa. I od razu trafila do katalogu gier. To tyle w temacie z mojej strony.

      QTZ:

      c) (uwagi) dodanie poprawki nie zmienia nic w głosowaniu bo głosujący głosują na tytuł (punkty za poprawkę trafiają na konto Blukiego)


      To nie tak. Nie ma znaczenia jaki jest tytul gry (ludzie oczywiscie moga sobie glosowac na tytul, w motywacje glosujacych nie wnikamy). Podstawowym kryterium jest gra, punkt widzenia gracza. Jezeli nowa wersja gry ma inna rozgrywke, poziomy, inne elementy powodujace, ze gra sie w nia inaczej niz w poprzednia wersje - to traktujemy to jaka inna, nowa gre. Jezeli w grze "64 figury" zmienilaby sie plansza np. na 63 figury to jest to istotna zmiana w rozgrywce i wtedy wystapilyby dwie gry obok siebie, o tym samym tytule. Ale zmiany, ktore wprowadziles, przynajmniej tak wynika z Twojego opisu w pliku txt, byly techniczne, nie majace wplywu na rozgrywke.

      QTZ:

      Generalnie nie rozumiem problemu daty publikacji poprawek-uzupełnień, bo czy gdybym był autorem danej gry i wypuściłbym poprawkę po nowym roku to nie byłaby brana pod uwagę, bo gra wyszła w ubiegłym roku, a poprawka w tym?


      Tak wlasnie by bylo - jest to normalne, bo w koncu glosujemy na gry, ktore sie pokazaly w 2011 roku, a nie takie, ktore sie ukazaly troche w tym, a troche w nastepnym. I tak wlasnie jest w tej edycji: w zeszlym roku TDC wypuscil wersje zlotowa "Miecz Przeznaczenia". Ta wersja bierze udzial w KK2011. W tym roku wprowadzil sporo poprawek i jeszcze jakies zamierza wprowadzic. I wersja ta, jezeli rzeczywiscie zmiany maja wplyw na rozgrywke, jak twierdzi TDC - bedzie wystepowowac w KK2012.

      Gdyby dopuscic wersje z poprawkami z nastepnego roku, to powstaje masa problemow logicznych - na przyklad kiedy my wlasciwie mamy zrobic KazKompo? Weszly by gry z poprawkami do marca, a dlaczego nie do kwietnia? W jednym roku bylyby poprawki tylko do stycznia, a w innym do marca, bo raz sie udaje KK zorganizowac wczesniej, a raz pozniej. Albo na przyklad gra po poprawkach moglaby byc trzy razy lepsza niz wersja pierwotna, na ktora glosowano (tak mogloby byc ze "Sssnake It"). Ogolnie - powstalby choas. A tak zasada jest prosta - gra startuje w takiej postaci, jaka byla w roku 2011. Jezeli byly znaczace poprawki - to w przyszlym roku tez moze startowac. Gdybys wyraznie napisal: 1.0b to nie jest wersja robocza gry tylko gotowa - to trafilaby do zestawienia i nie byloby dyskusji.

      Reszta pytan jest nie do mnie. Jak juz pisalem - w tym roku nie zajmowalem sie gromadzeniem gier i nic nie wiem, o jakie linki chodzi i do czego. Uderzaj do Xeena, on bedzie wiedzial cos wiecej.
      • 42:
         
        CommentAuthorxeen
      • CommentTime20 Mar 2012 20:03
       
      PS. Linki do RiverRide2k11 nie działa, brak linka m.in. do Blob Hunt, czyżby była to gra komercyjna? ;)


      uzupełniłem, dzięki za zwrócenie uwagi.

      QTZ:
      Co do wersji "b" - nie ukrywam, że też nie zajarzyłem, że jest to wersja ostateczna, mimo iż spoglądałem z zaciekawieniem na Twoją optymalizację (jakimś sposobem sądziłem, że to nie koniec). Jeżeli to kwestia tylko mojego zmęczonego umysłu i niedopatrzenia to bardzo Was przepraszam i proszę o info zwrotne na priv w przyszłości jak "krowie na rowie". Gonzo, na przykład, parę razy mnie prosił jawnie i troszkę coachował i w końcu finalne Dino i Fester znalazł się w katalogu. Jest to jakaś lekcja dla mnie, ale i tez prośba ogólna do Was. Trzeba będzie sobie radzić też w przyszłych edycjach z takimi "podtuneowanymi" grami.
      • 43: CommentAuthorQTZ
      • CommentTime21 Mar 2012 16:03 zmieniony
       
      @Kaz

      Nigdzie nie napisałem, że "bylo gotowe, a nie zauwazyliscie", nie taki był sens mojej wypowiedzi. Raczej "Jest a pominęliście".

      Po co te cytaty? Sporo nie trafionych, lub dotyczą tego, co już wspominałem. Najbardziej rozbawił mnie cytat ze ślimakiem :) Bo co ma ślimak do piernika? Jest też inny żarcik. Są dywagacje, na które Bluki odpowiedział i nie było powodu dalej się zagłębiać. Informacje, że czegoś nie ma, bo jest już rozwiązane inaczej. Jedna z wypowiedzi dotyczy edytora. Błąd jest cały czas i mam nadzieję Bluki go zlokalizuje :) Przecież zakończenie prac nad jedną wersją nie wyklucza robienia kolejnej?

      Ostatnią wersją z ubiegłego roku jest wersja "b" (pierwsza) na podstawie której Bluki zrobił poprawioną roboczą wersję "bx" (nieduże zmiany) i z niej miało być usunięte logo i wyrównane kilka nierówno ustawionych figur (drobiazgi). Ponieważ nie powstała inna wersja, wersja "b" była ostatnią w 2011. A nawet gdybym wtedy zrobił kolejną wersję to nie widzę problemu - wtedy ta nowsza byłaby ostatnią z 2011 roku, no chyba, że zaznaczyłbym, że jest to wersja testowa. Fakt, że powstała działająca wersja był dla mnie końcem pracy. Zająłem się innymi projektami. Gra miała premierę w 2011 r. a poprawka jak uważałem do niej należy. Według tego, co piszesz to gra znalazłaby się w konkursie jako konkurencja dla oryginału, a tego obaj z Blukim nie chcieliśmy.

      Z jednej strony są to zmiany techniczne, więc OK? Z drugiej nie? - Uruchom grę, to zobaczysz na czym polegają zmiany. Jeszcze raz napiszę: zmieniła się procedura wyświetlania figur, format ich zapisu i sposób ich wyświetlania przed rozgrywką - to sprawy techniczne. Jako bonus dodałem nowe obrazki - czy ma to wpływ na rozgrywkę? Dla mnie jest to ta sama gra, tylko szybciej działa. Z drugiej strony i tak zmian tych dokonałem jeszcze w ubiegłym roku.

      W ostatniej wersji (nazwijmy ją "b2") - już z 2012 - oprócz usunięcia logo i wyrównania figur, kilka przerobiłem i zamieniłem procedurę na tę, którą zmodyfikowałem na potrzeby CI, co nie wpływa na rozgrywkę i nie było konieczne. Więc skoro zmiany muszą być dokonywane do końca roku kalendarzowego, te zmiany nie podlegają dyskusji.

      Na marginesie: A co jeżeli tuż przed konkursem okaże się, że dany program ma poważny błąd uniemożliwiający lub utrudniający grę? Wtedy ocenie podlega wadliwa kopia gry? I co jeżeli poprawi to autor / albo ktoś inny?

      Nie, to nie. Umieszczanie linka w tym momencie to i tak musztarda po obiedzie, ale nie udawaj, że nie wiesz o co chodzi. W ubiegłym roku usprawniłem inicjalizację (bez wiedzy autora) jednej z gier i taki link się w zestawieniu znalazł i nie było to traktowane jako osobna gra (na szczęście). A gdyby ta gra wygrała nie pozostałoby mi nic innego jak pogratulować autorowi. A pod nowinką dotyczącą KK jest twój podpis, więc dlatego zwracałem się do Ciebie, sorry.
      Za umieszczenie w archiwum dziękuję, zwracam tylko uwagę, że Bluki prosił o rozróźnienie wersji oryginalnej od zmodyfikowanej.

      @Xeen

      Dzięki za zainteresowanie. Jak już wspomniałem miały być wprowadzone małe zmiany kosmetyczne, bez których i tak było OK, więc nie zawracałem sobie nimi głowy. A utworzona wersja "b" była w pełni działającą wersją. Gdyby pojawiła się kolejna wersja, ona byłaby ostatnią. Teraz mamy wersję "b", ale już z 2012 roku. Kolejną sprawą jest to, że nie chciałem robić konkurencji tylko przyspieszyć istniejący program, czyli pomóc, a nie wystawiać swoją wersję.
      • 44:
         
        CommentAuthorxeen
      • CommentTime21 Mar 2012 17:03 zmieniony
       
      Umieszczanie linka w tym momencie to i tak musztarda po obiedzie, ale nie udawaj, że nie wiesz o co chodzi. W ubiegłym roku usprawniłem inicjalizację (bez wiedzy autora) jednej z gier i taki link się w zestawieniu znalazł i nie było to traktowane jako osobna gra (na szczęście). A gdyby ta gra wygrała nie pozostałoby mi nic innego jak pogratulować autorowi. A pod nowinką dotyczącą KK jest twój podpis, więc dlatego zwracałem się do Ciebie, sorry.


      Generalnie prośba w przyszłości o info na priv od razu - w nowince podałem do kogo można przesyłać votki to i można przesłać uwagi, troszkę się powtarzam - ale chcę to podkreślić. Gdybym wiedział o tym od razu, to bym podmienił i nie byłoby żadnego problemu. Nowinkę pisałem głównie ja (Kaz korygował i to puścił) i to ja biję się w pierś. Także ponowne przepraszam i proszę o wyrozumiałość. Jak dostanę czasem feedback bezpośrednio, że coś tam nie gra to będę na pewno wdzięczny za to - dotyczy nowych gier, konkursów itp. Z góry dzięki. Co z Computer Inhabitants? Pytam bardziej offtopowo, ale przy okazji.
      • 45: CommentAuthorQTZ
      • CommentTime21 Mar 2012 17:03
       
      Nie chodziło o podmianę tylko dodatkową informację. Ale już trudno.

      CI zostawiłem. Po ostatnim "poście" jeszcze kilka dni robiłem poprawki, muszę to złożyć do kupy i tak umieszczę i na razie to będzie tyle.
      • 46:
         
        CommentAuthorxeen
      • CommentTime21 Mar 2012 17:03
       
      dodałem jeszce tę dodatkową informację, w poradnikach z grami z 2011 zostanie dla potomnych ;) no i w nowince z KK2011. Wiem, wiem - musztarda po itp. no ale już mam dziurę w piersi...
    1.  
      Robicie "szum medialny" wokół gry, chcecie nabić głosów? :-)))
      • 48: CommentAuthorBluki
      • CommentTime21 Mar 2012 22:03
       
      No i się wydało... Ale to nic, popatrz jaka się zrobiła promocja gry "Dysc i sikawica". Wszędzie jej pełno :)

      PS. Bez obaw. Jeśli nic nadzwyczajnego się nie wydarzy, to "Biedny Pies Antoni" w przyszłym roku będzie (przynajmniej u mnie) w pierwszej dziesiątce :D
      • 49: CommentAuthorQTZ
      • CommentTime22 Mar 2012 12:03 zmieniony
       
      Dzięki Xeen :).
      • 50:
         
        CommentAuthorKaz
      • CommentTime23 Mar 2012 15:03
       
      QTZ, sorry, ale ta rozmowa zaczyna prowadzic do niczego. Zadales pytanie, dlaczego Twoja wersja zostala zapomniana. Wiec odpowiedzialem: bo moim zdaniem nie wyraziles sie wystarczajaco jasno, ale w sposob bardzo zagmatwany, ktory spowodowal, ze nikt, lacznie z autorem gry, sie nie zorientowal, ze wersja b to jakas gotowa wersja. Co wiecej, zasugerowales, ze prace nad poprawkami trwaja...

      Mialem nadzieje, ze po to pytasz, by sie dowiedziec, co bylo nie tak i skorygowac to w przyszlosci. A okazalo sie, ze teraz masz pretensje, ze jednak wyraziles sie jasno i precyzyjnie, a to wszyscy wkolo sie myla. No dobrze, to teraz ja mam pytanie: skad w takim razie wziela sie ta sytuacja, ze ani Bluki, ani Kaz, ani Xeen nie zorientowali sie, ze Twoja wersja jest skonczona? Sa glupi, nieuwazni, nierozgarnieci?

      Nie, nie wystarczy, zeby cokolwiek sie pojawilo w danym roku, zeby wlaczyc to do gier danego roku. Potrzebny jest tez wyrazny komentarz autora albo dorozumiany, ze to mozna uznac za koniec prac. W innym przypadku juz lata temu publikowalibysmy na przyklad "International Karate +", ktore jest gra grywalna. Ale autor twierdzi, ze jeszcze nad nia pracuje!

      Nie, nie dales znaku, ze to koniec Twoich prac (to jeszcze nie bylby problem), ale nawet zasugerowales, ze wrecz przeciwnie - bedziesz kontynuowal prace. Nie ma tu nic do rzeczy, ze w przyszlosci gra bedzie wymagac poprawek czy naprawienia bledow. Za kazdym razem, po kolejnej poprawce mozesz twierdzic, ze to juz koniec prac - i wtedy nastepuje drugi etap, sprawdzenie po naszej stronie: czy to byla poprawka znaczaca dla rozgrywki czy nie. Takie sa reguly KK, bo jakies w tym wzgledzie byc musza. W przeciwnym wypadku publikowalibysmy kazdy PLIK gry, jaki sie pojawil w danym roku, a chyba nie o to chodzi. Powstaje wiele wersji roboczych, ale to autor decyduje czy juz koniec (albo jesli autor sie nie wyrazil jasno, ale jasne jest, ze koniec prac - to organizatorzy konkursu).

      =QTZ]Nigdzie nie napisałem, że "bylo gotowe, a nie zauwazyliscie", nie taki był sens mojej wypowiedzi. Raczej "Jest a pominęliście".


      No wlasnie - to jest problem, ze trzeba analizowac sens Twoich wypowiedzi. Ale jak zaczynam je analizowac to sie oburzasz "po co te cytaty". Nie rozumiem tego.

      QTZ:

      Po co te cytaty? Sporo nie trafionych, lub dotyczą tego, co już wspominałem.


      Te cytaty sa po to, bo chcialem Ci pokazac, ze wielokrotnie zasugerowales, ze bedzie ciag dalszy prac. Z tego w dwoch bodajze przypadkach napisales wprost, ze bedziesz cos poprawial. Ciesze sie, ze wedlug Ciebie "sporo jest nietrafionych", bo oznacza to ze jednak pozostale, nieliczne sa trafione. A chyba wystarcza te nieliczne jako argument?

      QTZ:

      Przecież zakończenie prac nad jedną wersją nie wyklucza robienia kolejnej?


      Oczywiscie. Dlatego wystarczylo dac znac, ze zakonczyles prace nad wersja b i nie byloby calej dyskusji. A jest, bo zasugerowales w listopadzie, ze dalej pracujesz nad poprawkami, a w marcu zglosiles pretensje, ze jednak juz nie pracujesz.

      QTZ:

      miała premierę w 2011 r. a poprawka jak uważałem do niej należy. Według tego, co piszesz to gra znalazłaby się w konkursie jako konkurencja dla oryginału, a tego obaj z Blukim nie chcieliśmy.


      Moglbys mi wylozyc, jakie rozumowanie doprowadza Cie do takiego wniosku? Bo przyznam szczerze, ze nie rozumiem - moim zdaniem gra by sie nie pojawila jako konkurencja i wyraznie to napisalem (bo nie rozni sie rozgrywka). Tym bardziej, ze za chwile piszesz tak:

      QTZ:

      Dla mnie jest to ta sama gra, tylko szybciej działa.


      Juz nie bede sie czepial logiki sformulowania "ta sama" (gdzie indziej piszesz, ze szybsza i zmieniona), bo obruszasz sie na analize swoich wypowiedzi.

      QTZ:

      W ostatniej wersji (nazwijmy ją "b2") - już z 2012 - oprócz usunięcia logo i wyrównania figur, kilka przerobiłem i zamieniłem procedurę na tę, którą zmodyfikowałem na potrzeby CI, co nie wpływa na rozgrywkę i nie było konieczne. Więc skoro zmiany muszą być dokonywane do końca roku kalendarzowego, te zmiany nie podlegają dyskusji.


      Zmiany moga byc dokonywane w dowolnym czasie, nawet 10 lat pozniej. My nie dyktujemy autorowi ani autorowi poprawek zadnych decyzji co do gry. Moze oglaszac (lub nie) koniec prac nad gra lub wersja gry, moze robic poprawki o dowolnym zakresie, w dowolnym terminie.

      My tylko regulujemy dopuszczalnosc gry do konkursu - ustalamy pewne ramy tej dopuszczalnosci (czas publikacji, nowosc gry). Staramy sie zeby, te ramy byly najszersze jak sie da, ale jednak jakies byc musza. A sposrod tych dopuszczonych gier ludzie sami wybieraja, co cenia, a co nie i za co.

      QTZ:

      Na marginesie: A co jeżeli tuż przed konkursem okaże się, że dany program ma poważny błąd uniemożliwiający lub utrudniający grę? Wtedy ocenie podlega wadliwa kopia gry? I co jeżeli poprawi to autor / albo ktoś inny?


      Nic sie nie dzieje. Gra moze sobie miec ze sto bledow. Gry z poprzednich edycji maja mnostwo bledow, nawet pewnie wiele z nich jeszcze nie jest odkrytych. I co z tego? Sadzisz, ze oceniac mozna tylko gre, ktora jest bezbledna? O ile pamietam, byla nawet w ktoryms roku gra, ktora sie wieszala na real Atari, ale a) autor uznal ja za skonczona, b) ludzie grali w nia na emulatorach i dosc wysoko oceniali za wykonanie. I my sie w to nie wtracamy: autor ma glos decydujacy co do tego, co wypuszcza w swiat, a gracze maja glos decydujacy co do tego, jak oceniaja to, co w swiat poszlo.

      QTZ:

      Nie, to nie. Umieszczanie linka w tym momencie to i tak musztarda po obiedzie, ale nie udawaj, że nie wiesz o co chodzi. W ubiegłym roku usprawniłem inicjalizację (bez wiedzy autora) jednej z gier i taki link się w zestawieniu znalazł i nie było to traktowane jako osobna gra (na szczęście). A gdyby ta gra wygrała nie pozostałoby mi nic innego jak pogratulować autorowi.


      Nie, nie wiem o co chodzi. Jezeli jakas wersja gry jest publikowana na podstawie oryginalu to, powtarzam za regulaminem, podajemy autorow poprawek. W przypadku tajemniczej gry, do ktorej robiles inicjalizer, podany bylby autor gry i autor poprawki. Gdyby oczywiscie byli mi znani (lub osobie przygotowujacej zestawienie). Jezeli autor nie jest znany, bo na przyklad zachowuje anonimowosc, to trudno podac autora, prawda?

      QTZ:

      A pod nowinką dotyczącą KK jest twój podpis, więc dlatego zwracałem się do Ciebie, sorry.


      Nic nie szkodzi, ja sie nie obrazam. Co prawda pod nowinka jest moja ksywa, bo wiekszosc jej napisalem ja, ale tez wyraznie w tekscie nowinki napisalem, kto przygotowal zestawienie gier, bo to spora praca i spora odpowiedzialnosc.

      Nie chcialem sie wcinac Xeenowi w odpowiadanie, bo moglo cos byc w tym jego zestawieniu takiego, co byloby sprzeczne z moja wypowiedzia, dlatego zastrzeglem, ze to moja opinia, a Xeen pewnie wypowie sie osobno.

      QTZ:

      Dzięki za zainteresowanie. Jak już wspomniałem miały być wprowadzone małe zmiany kosmetyczne, bez których i tak było OK, więc nie zawracałem sobie nimi głowy. A utworzona wersja "b" była w pełni działającą wersją. Gdyby pojawiła się kolejna wersja, ona byłaby ostatnią. Teraz mamy wersję "b", ale już z 2012 roku.


      Przepraszam, ze sie wtrace, ale to wlasnie takie postepowanie sprzyja zamieszaniu. Ilez jeszcze wersji "b" powstanie?

      QTZ:

      Kolejną sprawą jest to, że nie chciałem robić konkurencji tylko przyspieszyć istniejący program, czyli pomóc, a nie wystawiać swoją wersję.


      Tu jest pewne nieporozumienie, ktore chcialbym wyjasnic. KK to nie jest konkurs, na ktory sie wystawia gry. Tak dziala konkurs ABBUC - kazdy chetny moze wystawic gre. Do KK gry trafiaja z powodu ich publikacji, obojetnie gdzie i jak.