76

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Zacząłem tutorial i utknąłem na części 2, ponieważ Super Packer i plik z POLSKIE.FNT są na osobnych dyskietkach. Jak sobie z tym poradzić?

- z dyskietki z narzędziami wczytujemy Super Packera (SP**)
- wczytujemy nasz font (opja F - load data file)=>POLSKIE.FNT

Ostatnio edytowany przez adolfinio (2019-05-20 18:10:15)

77

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Przepraszam, może głupio odpowiem bo jeszcze kawy nie wypiłem, ale zmienić dyskietkę na tą z fontami po wczytaniu SP**?

ps. @Sikor, czy będziesz kontynuował w przyszłości cykl ?

Ostatnio edytowany przez lopez (2019-05-21 06:46:45)

78

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Tak, zamierzam wrócić z cyklem na dniach. Jeśli fonty masz na drugiej dyskietce i chcesz ją dołączyć do dane.dat - jak najbardziej.
Co do cyklu - w tym i przyszłym tygodniu muszę nadrobić zaległości w pracy, potem wracamy do tematu, bo mimo wszystko chcę to dociągnąć do końca.

Sikor umarł...

79

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Super! czekam z niecierpliwością :)

80

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

I jak będzie kontynuacja ?

81

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Hej!
Będzie, borykam się jeszcze z drobnymi sprawami, ale ruszamy dalej w sierpniu.

Sikor umarł...

82

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Spoko, czekam więc dalej :)

83

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Wszyscy czekamy niecierpliwie :-)

84

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

JEstem wyjechany, po powrocie działamy dalej...

Sikor umarł...

85

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Tak informacyjnie - zgrałem sobie grafiki lopeza i powoli wracam do żywych z tutorialem. Wiem, długo to trwało... :/

Sikor umarł...

86

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Super :)

87

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Super kurs. Dzięki Sikor, też śledzę jak najbardziej uważnie :)

Atari 65XE + LDW SUPER 2000 + SIO2SD + SIO2PC + Stereo + TTP + Ultimate Cart + Multicart XE

88

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Za zgodą Sikora połączyłem dotychczasowe odcinki jego kursu w jeden document. Efekt tego w postaci pliku pdf jest dostępny w załączniku. Oczywiście document będzie aktualizowany i korygowany. Uwagi mile widziane. :)
W każdej części są widoczne załączniki, ale że to pdf, możemy zobaczyć tylko ich ikony i nazwy. Na samym końcu zbiorę je wszystkie razem i umieszczę w jednym pliku zip.
Pozdrawiam!

Ostatnio edytowany przez Alex_D (2019-11-04 12:15:00)

Post's attachments

Krótki tutorial w Turbo Basicu XL do gier.pdf 630.38 kb, liczba pobrań: 20 (od 2019-11-04) 

Tylko zalogowani mogą pobierać załączniki.
Atari 65XE + LDW SUPER 2000 + SIO2SD + SIO2PC + Stereo + TTP + Ultimate Cart + Multicart XE

89

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Ja z uwag mam tylko coś o czym już mówiliśmy wcześniej, ale chciałbym przypomnieć: żeby wszystkie pliki, całość prac trzymać w jednym atr i nie bawić się w ustalanie gęstości i innych takich. I tak większość chyba programuje to i testuje pod emulatorem na pececie z racji wygody, a jeśli ktos jest takim hardkorowcem, że robi wszystko na Atari, to również poradzi sobie bez problemu z samodzielnym podzieleniem tego sobie jak mu wygodnie na dyskietkach.
Tak że proponował bym atr 720kB i wrzucić wszystko do niego - ale to już decyzja Sikora.

Ja obecnie dość dużo grzebałem akurat w TBXL przy okazji refaktoringu mojej starej gry z dzieciństwa The Last Disk (udostępniałem na sąsiednim forum) i przy tej okazji doświadczyłem różnych koncepcji, co zaowocowało wypracowaniem najwygodniejszej dla mnie metody pracy. Oczywiście każdy robi po swojemu, ale napiszę jak ja to robię, może się przyda innym.
Po pierwsze skorzystałem z narzędzi Sikora opisanych w tym wątku - wszystko bardzo się przydaje.
Robię tak, że mam atr 720kB, na którym mam MyDOS, TBXL, i pozostałe narzędzia. Pracuję pod Altirra, więc odpalam tego atr-a i z niego startuję. Dodatkowo mam podmapowany katalog na pececie jako H6: i w tym katalogu trzymam cały listing pisanego programu w zwykłym pliku textowym, którego edytuję sobie na pececie (używam akurat Notepad++, który koloruje mi ładnie składnię).
I teraz tak: pracę zaczynam od odpalenia Altirra, następnie uruchamiam TB.COM.
W TBXL piszę sobie ENTER "H6:GRA" (plik nazwałem GRA, żeby szybko się wpisywało).
To powoduje wciągnięcie całego listingu i już można go odpalić RUN
Następnie podczas wprowadzania zmian w listingu nie robię całej operacji za każdym razem od nowa, tylko kopiuję z pliku tekstowego kilka linijek, które akurat pozmieniałem i zwyczajnie w Altirra robię prawym przyciskiem wklej. I znowu RUN.
Bardzo szybko się w taki sposób pracuje. Program przerywam Reset(F5), albo Break(F7). Jak zmienię bardzo dużo w kodzie, to ewentualnie "odświeżam" całość, więc w Altirra robię Shift+F5(cold start), L->TB.COM, ENTER "H6:GRA" i już.
Dodatkowo na każdym etapie wklejania kodu do Altirra można przytrzymać F1(przyspieszenie emulacji), co powoduje szybkie wykonanie szeregu operacji tak długo jak trzymamy F1 - jak puścimy, to wszystko pracuje z powrotem z normalną prędkością.

Jeszcze co do łączenia plików z danymi. Używam Super Packera od Sikora, jest fajny, używam też Mossada - też wszystko super. Ale jak już mamy plik z danymi i chcemy do niego dokładać kolejne dane, które i tak mamy na pececie, to już robię to inaczej, szybciej. Plik binarny edytuję sobie na pececie programem HxD Hex Editor. Jak sobie otworzymy w nim nasz plik z danymi, to zobaczymy, że nagłówek, który dołożył nam Super Packer jest bardzo prosty i można go szybko i łatwo zmieniać ręcznie. Pierwsze dwa bajty, to FFFF, następnie mamy dwa bajty adresu początkowego pod jaki wczytane zostaną nasze dane, a następnie dwa bajty adresu końcowego. Oba adresy mają odwrotnie zapisane bajty (najpierw bajt młodszy, a później starszy -trzeba na to zwrócić uwagę). I teraz jak do swojego pliku doklejam np. kolejne dane, to po prostu wklejam te dane na końcu pliku w HexEditorze, do adresu końcowego dodaję odpowiednią ilość bajtów i poprawiam go ręcznie w pliku. Zapisuję sobie plik i gotowe. Poprawiony plik wrzucam sobie na swojego atr-a również w Altirra. Odmontowuję dyskietkę, wchodzę sobie w Tools->Disk explorer, tam usuwam stary plik, a nowy przeciągam i upuszczam do wnętrza atr-a. I gotowe, podmontowuję z powrotem atr-a i już mam zaktualizowane dane.
Dane binarne wczytuję w pierwszej linii programu za pomocą BLOAD, więc jak robię RUN, to nie muszę o tym pamiętać. Jak już program jest skończony, to wywalam tą linijkę z BLOAD, a dalej kompiluję i łączę wszystko w całość już tak jak opisał Sikor w swoich poradnikach.

90

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Na PC masz też Super Packera od mad Team-u bodajże, tym niemniej dalej będę opisywał pod Atari. Obraz dyskietki nawet zrobiłem już większy, ale powoli, dokucza mi brak czasu. Mimo wszystko postaram się wszystko dokończyć.
Fajnie, że cokolwiek z mojego kursu się przydało. Buduje to chęć dalszej pracy nad projektem.

Sikor umarł...

91

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Tak, ja sobie sporo skorzystałem z Twoich porad, tak że super.

Co do tworzenia na Atari i opisywania pod tym kątem, to jestem jak najbardziej za - ma to też swoją dużą wartość, więc kontynuuj to właśnie tak.

Ja te swoje "udogodnienia" pecetowe opisałem tutaj tylko tak nawiasem, w dzisiejszych czasach jest mnóstwo różnych narzędzi, z których można korzystać na różne sposoby, tylko tyle chciałem pokazać. Odpowiada mi bardzo tutorial pokazujący jak to się wszystko robi na Atari, bo mówimy cały czas o Atari tylko i wyłącznie. Natomiast znając już jak się coś tam robi na Atari i mając podstawy można poszukiwać jakby w kolejnych krokach udogodnień, dodatkowych narzędzi itp. - ale to już indywidualnie co kto tam lubi.

92

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

@Alex_D.   Niezły pomysł. Przyda się mieć cały poradnik "w kupie" :-). Mała uwaga - gdzie wcięło polskie ogonki? W oryginalnym tekście są, a w PDF'ie ich brak. Przynajmniej na początkowych stronach. Nie to, żebym się czepiał, ale wypadałoby jednak pisać po polsku, a nie polskiemu :-). Ale ogólnie pomysł popieram.
@Sikor. Wspaniale, że się znów pojawiłeś :-). Czekamy niecierpliwie na dalsze części poradnika.

93

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Mam pytanie dot. zawartości materiałów binarnych. Co to jest za plik z tymi polskimi fontami? Oprócz tego, że ma polskie fonty, to zauważyłem, że ma trochę pozmieniane też inne literki. Np. S jest bardziej zawinięte itp. Ale najistotniejsze co zauważyłem, to font ma zamienione miejscami przecinek i średnik. Pytam z ciekawości, to tak ma być, czy może jest to jakaś wersja "rozgrzebana" czy coś w tym stylu? A może celowo font ma szereg jakichś zmian. Czy jest gdzieś do tego opis jakiś autora, lub coś, albo możesz Sikor Ty coś więcej o tym pliku opowiedzieć?

I może trochę wybiegnę tutaj do przodu, ale mam pytanie dot. przygotowania tekstów do gry i ich wyświetlania.
Kłopot jest taki, że jak chcę przykładowo wyświetlić większe ilości tekstu całymi ekranami, to najmniej kosztowne wydaje się być wrzucenie takich tekstów również jako dane binarne i wówczas wyświetlanie ich za pomocą MOVE bezpośrednio wrzucając pod adres ekranu z odpowiednim ofsetem. To działa super, jednak żeby w ogóle zadziałało, to teksty muszą być przygotowane w kodowaniu znaków z użyciem INTERNAL CODE. Jednak jak mamy tak przygotowane teksty, to z kolei nie da się (chyba) łatwo takiego tekstu wydłubywać jednocześnie z pamięci i wyświetlać za pomocą standardowych PRINT, czy TEXT, czy pojedynczych znaków przez CHR$, bo wszystkie te polecenia wymagają z kolei tekstu zakodowanego jako ATASCII. Czy da się jakoś łatwo radzić sobie z tą dualną naturą kodowania znaków na Atari (IC/ATASCII)?

Ostatnio edytowany przez Mq (2019-11-06 22:59:29)

94

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

W pierwszej części tutoriala Sikor napisał:
"* UWAGA! znak "," zamieniony ze znakiem ";" - dlaczego opiszę w kolejnych częściach tutorialu".
Pewnie w którejś z następnych wyjaśni o co biega. Czekamy "-).

95

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

O faktycznie, przeoczyłem tą uwagę.
Niemniej chętnie bym się coś więcej na temat tych tekstów/fontów/wyświetlania dowiedział, bo akurat się tym bawię w danym momencie:-)

96

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

zbych099 napisał/a:

@Alex_D.   Niezły pomysł. Przyda się mieć cały poradnik "w kupie" :-). Mała uwaga - gdzie wcięło polskie ogonki? W oryginalnym tekście są, a w PDF'ie ich brak. Przynajmniej na początkowych stronach. Nie to, żebym się czepiał, ale wypadałoby jednak pisać po polsku, a nie polskiemu :-). Ale ogólnie pomysł popieram.
@Sikor. Wspaniale, że się znów pojawiłeś :-). Czekamy niecierpliwie na dalsze części poradnika.

Dzięki.
Jestem cały czas w trakcie poprawiania, ale co do ogonków, to w pierwszej części jest na odwrót w poście było bardzo malo ogonków, dodałem je w pdf'ie, ale fakt, jest jeszcze kilka miejsc, które przeoczyłem. Mam rozumieć, że na pierwszych stronach ich w ogóle nie widzisz?

Atari 65XE + LDW SUPER 2000 + SIO2SD + SIO2PC + Stereo + TTP + Ultimate Cart + Multicart XE

97

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

To odpowiem: linie DATA są rozdzielane...? Przecinkami. Zamieniam znak w fontach ponieważ później łatwiej jest operować danymi, a z punktu pisania zmiana żadna. Dzięki temu data bez apostrofów może działać zarówno jako tekst, jak i dane liczbowe.

Sikor umarł...

98

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Część czwarta - konwertujemy grafikę.
Z przyczyn częściowo niezależnych i z powodu różnych kolei losu długo mnie nie było, tym niemniej postanowiłem, że należy dociągnąć kurs do końca.Zacznijmy więc ;)
Na początek postanowiłem za głosami ludu stworzyć jednego większego ATR-a do kursu. Nazwałem go roboczy_big.atr - i proszę o używanie tej wersji podczas kursu (lub zgranie odpowiednich plików na pojedyńczą dyskietkę do użycia w prawdziwej stacji dysków). Dziś zajmiemy się konwersją grafiki - w załączniku do dzisiejszej części będzie też obraz pod nazwą roboczy_big_po.atr - czyli obraz po zmianach.
Po konwersji dodamy sobie wszystko do pliku dane.dat i napiszemy krótki programik do przeglądania całości. Taki króciutki powrót do realiów kursu.
Na początek - uruchamiamy naszą dyskietkę i wgrywamy jv:

L=>jv**=>return

Kolej na ustawienie sobie do konwersji trybu 8 basica (powtórka z części 3): klawisz M do ustawienia Mode Gr.8 BW, teraz L i wgranie pliku do konwersji (P1.GIF), jeśli parametry się zgadzają - to Return i patrzymy, czy wszystko w porządku. Powinien nam się pojawić obrazek jak w grafice p1 (załącznik). Wciskamy klawisz START i potem S (zapis), podajemy nazwę (P1.8) i zapisujemy.
Tak samo postępujemy z resztą grafik (nie modyfikowałem ich, są Lopeza). Przydatny może nam być w tym klawisz D - katalog dysku (proponuję zastosować maskę *gif lub *.gif dla innych dosów niż MyDos). Proszę to wykonać jako własne ćwiczenie (pamiętamy o zmianie nazwy z *.GIF na *.8 dla naszych potrzeb).
Jeśli wszystko nam poszło w porządku - mamy 6 plików graficznych w 8-mym trybie, ale pełnoekranowych. Wychodzimy z JV i użyjemy narzędzia, które sobie kiedyś napisałem (w załączniku plik pdf z instukcją w języku polskim i angielskim - dzięki Miker). Oczywiście w naszym przypadku równie dobrze można by napisać prostą procedurę, ale programik radzi sobie także z innymi obrazami.
Ok, do dzieła. Wczytujemy sobie narzędzie BLOCKCUT.XEX, po dłuższej chwili powinno nam się pojawić menu. Najpierw ustawmy sobie tryb graficzny (klawisz M - mode, na dole musi być Actual Graphics Mode: 24), potem ustawiamy plik do odczytu i zapisu (klawisz F, potem pełna ścieżka pliku wejściowego i wyjściowego oraz ilość bajtów "do przeskoczenia), u nas odpowiednio:

D:P1.8
D:.P1.D
N

Po chwili powinna nam się wgrać nasza grafika (można podejrzeć klawiszem V). Musimy teraz ustawić nasze parametry wycinania (standardowe "nieco się różnią" od naszych docelowych. Wybieramy ustawienie parametrów (P), a następnie:

W i ustawiamy 10 (10 bajtów to 80 pikseli)
H i ustawiamy 80 (80 linii)
E - wyjście do menu (nic nie pomijamy w naszym przypadku)

W opisie na dole widać: tryb graficzny 24, 10 bajtów szerokości, 80 linii, w sumie 800 bajtów na dane obrazka - pasuje nam ;) Wybieramy C i wycinamy nasz kawałek (dowolny klawisz po pokazaniu grafiki). Program nam pokaże grafikę przed wycięciem i po wycięciu (widać to dobrze na większych obrazkach, u nas praktycznie bez zmian). Jak wszystko ok - naciskamy Y i blok nam się zapisze, jak nie - N i ustawiamy parametry.
Czynności powtarzamy dla kolejnych obrazków, z tym - że parametry mamy już przygotowane (więc tylko ustawiamy pliki i cięcie obrazka). Dla chcących trochę rozrywki można sobie posłuchać muzyki w CMC (odsyłam do instrukcji). W ramach nauki proszę sobie wyciąć resztę grafiki (opcje F oraz C najbardziej przydatne).
Po zapisaniu sobie grafik w wersji wyciętej przejdźmy do Super Packera i dodajmy wszystko do naszego bloku danych. Wczytujemy (L=>sp**, potem L=>DANE.DAT). Teraz należy wczytać nasze kawałki. Mamy ich 6 po 800 bajtów, więc liczymy:

$9500-4800=$8240

Pod ten adres wczytujemy nasze grafiki (przypominam, opcja F i nadawanie adresu), moja kolejność to: P1, T4, T5, T6, T7, T9 - proponuję ją zachować. Ja w swoim pliku podjechałem strzałkami tak, aby wszystko było od góry, ale nie ma to znaczenia. Zapisujemy wszystko (S=>DANE.DAT) i wychodzimy z Super Packera (Q). Teraz wczytajmy nasz Turbo Basic i wczytajmy nasze dane (L=>TB**, BLOAD"D:DANE.DAT).
Na zakończenie naszego odcinka napiszemy sobie procedurkę do sprawdzenia naszej grafiki. Proszę starannie przepisać kod (Uwaga! Można użyć kodu z instrukcji!):

10 GRAPHICS 8:POKE 710,0
20 ADRES=$8240
21 FOR I=0 TO 79
22   MOVE ADRES+I*10,DPEEK(88)+I*40,10

23 NEXT I
24 ADRES=ADRES+800:GET KEY
25 IF ADRES>=$9500 THEN GOTO 20
26 GOTO 21

Pokrótce opiszę co nasz program robi - proponuję go zapisać jako testgr.tb.
Linia 10 - włączenie 8-go trybu graficznego i ustawienie koloru na czarny
Linia 20 - ustawienie bazowego adresu naszej pierwszej grafiki
Linie 21-23 to pętla wyświetlająca nasze "bloki". Instrukcja MOVE przenosi nam dane spod adresu pomnożonego przez skok pętli i ilość bajtów, miejsce docelowe to początek ekranu i z każdą linią zmienia się o długość linii w bajtach, ostatni parametr to ilość bajtów do przeniesienia (szerokość naszego obrazka). Tutaj uwaga - proszę się pobawić linią 22 i na przykład dać jakieś wartości po dpeek(88), na przykład:

22   MOVE ADRES+I*10,DPEEK(88)+25+I*40,10

Określi nam to co do bajtu położenie obrazka na ekranie.
Linia 24 to zmiana adresu bazowego i czekanie na wciśnięcie klawisza
Linia 25 - jeżeli adres bazowy jest równy (dla bezpieczeństwa zawsze zaznaczam większy bądź równy) od adresu ostatniego obrazka - jedziemy na nowo
linia 26 - w przeciwnym wypadku - kolejny obrazek
O.K. Nasz "program" ma za zadanie po prostu testować naszą grafikę i ją wyświetlić, nic ponadto. Tylko tyle i aż tyle. Kończymy go klawiszem Break.
Wychodzimy do DOSu i usuwamy nasze zbędne pliki (*gif, *8, *d) - nie będą nam już potrzebne. Na dzisiaj tyle - o uwagi proszę w komentarzach. Wkrótce postaram się napisać kolejną część.
==============
edit: dodana jedna grafika

Ostatnio edytowany przez Sikor (2019-11-07 22:38:45)

Post's attachments

gr_block_cutter_manual_en.pdf 134.04 kb, liczba pobrań: 9 (od 2019-11-07) 

gr_block_cutter_manual_pl_.pdf 134.64 kb, liczba pobrań: 10 (od 2019-11-07) 

p1.png 5.18 kb, liczba pobrań: 3 (od 2019-11-07) 

roboczy_big.7z 66.79 kb, liczba pobrań: 10 (od 2019-11-07) 

roboczy_big_po.7z 72.51 kb, liczba pobrań: 10 (od 2019-11-07) 

Tylko zalogowani mogą pobierać załączniki.
Sikor umarł...

99

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Mała ciekawostka odnośnie DATA.
Atari BASIC wewnętrznie pobiera dane z linii DATA za pomocą tej samej procedury, która realizuje INPUT. Tak więc dane w liniach DATA rozdzielane przecinkami traktowane są jako osobne. Polecam sprawdzić działanie takiego kodu:

10 DIM A$(100)
20 RESTORE 
30 READ A$
40 ? A$
50 GOTO 30
100 DATA 1ST LINE
110 DATA 2ND LINE,AND THE REST
120 DATA 3RD LINE
130 DATA 
140 DATA 4TH LINE

Edit: Dane w liniach DATA zawsze trzymane są w postaci niestokenizowanej - niezależnie od tego czy tam są liczby czy tekst, więc jest to mało optymalna metoda trzymania liczb dłuższych niż 6 cyfr.

Ostatnio edytowany przez mono (2019-11-07 22:11:09)

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

100

Odp: Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych

Alex_D napisał/a:

Jestem cały czas w trakcie poprawiania, ale co do ogonków, to w pierwszej części jest na odwrót w poście było bardzo malo ogonków, dodałem je w pdf'ie, ale fakt, jest jeszcze kilka miejsc, które przeoczyłem. Mam rozumieć, że na pierwszych stronach ich w ogóle nie widzisz?

Nie do końca. Część ogonków jest widoczna, ale inne wcina. Co ciekawe, to takie same znaki: np. ż raz widać, a raz jest to z.
Przykład w załączniku. Trochę to dziwne chyba jest.

Post's attachments

przyklad.txt 2.31 kb, liczba pobrań: 11 (od 2019-11-07) 

Tylko zalogowani mogą pobierać załączniki.