101

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

Dzięki zbyck99, jak dorzucę czwartą część, to już wszystko powinno być ok, bo robiłem poprawki wczoraj.

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

102

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

Głosowanie: Czy chciałbyś taki krótki tutorial jak w temacie? (Krótki tutorial w Turbo Basicu XL do gier (pseudo)paragrafowych).

Głosuję na Tak z grafikami, ale i wersja tekstowa byłaby pouczająca. Bardzo dobrze podsumował to Mq.

103

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

Po kolejnej części przedstawionej przez Sikora dorzucam kompletny plik pdf z pełnym kursem i z poprawkami smile

Post's attachments

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

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

104

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

Super, że jest kontynuacja smile
Muszę znaleźć trochę czasu i przysiąść od nowa smile

105

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

@Alex_D.  Świetna robota. Ale żeby (nieuniknione) literówki nie "biły po oczach", podsyłam pliczek, w którym zaznaczyłem te wyłapane do ew. poprawy.

Post's attachments

Tutorial_GRA-w-TB_poprawki-do PDF.txt 1.93 kb, liczba pobrań: 9 (od 2019-11-12) 

Tylko zalogowani mogą pobierać załączniki.

106

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

@zbych099: Dzięki wielkie za poprawki.

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

107

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

No, ja z czasem krucho stoję, ale postaram się działać dalej

Sikor umarł...

108

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

@Sikor: Bardzo dobra robota. Jak sklejam to w dokumencie do kupy, to widzę ile tego jest. Super! smile

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

109

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

Ze swojej strony napiszę, że zarówno Alex_D, jak i zbych099 odwalają kawał dobrej roboty, a część literówek to moja klawiatura w lapku tworzy i nie zawsze to wychwycę - piszę tutorial w zasadzie na żywo, w notatniku, wraz z tagami i potem przeklejam całość. Niestety, czasem za późno odpuści prawy Alt i pojawiają się polskie znaczki. Jest to niestety nieregularne i nie wiem do końca, czemu tak się dzieje.
Budujące jest to, że niektórym chce się czytać moje wypociny, a wiem też, że niektórzy z tego tutoriala korzystają. Parę osób, ale zawsze wink

Sikor umarł...

110

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

Czy jest szansa, że kolejna część tutoriala pojawi się jeszcze w tym roku (przed świętami)? Czy dopiero  w 2020r.? Nie ukrywam, że z niecierpliwością oczekuję cd. I chyba nie tylko ja :-).

111

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

szansa jest wstępnie na koniec przyszłego tygodnia, o ile syne wieczorem pozwoli posiedzieć wink Dzięki za zainteresowanie - to daje (pozytywnego) kopa wink

Sikor umarł...

112

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

Część piąta - czas na ożywienie intra...
Dzisiaj ożywimy nieco nasze intro. Ostatnio przygotowaliśmy sobie grafikę, spróbujmy ją dzisiaj zacząć wykorzystywać w naszej grze, Na początek przypomnę, jak mamy ustawione dane:

Dane:
$95c0-$9fff grafika tytułowa
$9c00-$9fff fonty do gry
$8240-$855f P1
$8560-$887f T4
$8880-$8b9f T5
$8ba0-$8ebf T6
$8ec0-$91df T7
$91e0-$94ff T8

Wczytujemy teraz Turbo Basic, nasze dane (BLOAD"D:DANE.DAT") oraz nasz dotychczasowy kod gry (LOAD"D:GRA1.TB"). Poke 756,$9c (kto przypomni, co to robi?) i listujemy naszą grę. Na początek nieco namieszamy w naszej procedurze INTRO:

100 PROC INTRO
101   GRAPHICS 24:POKE 710,0:POKE 709,
15:POKE 756,$9C
102   MOVE $95C0,DPEEK(88),1600
142   COLOR %1:TEXT 10,100,"Tu b dzie
intro"
150   IF PEEK(53279)<>6 THEN 150
190 ENDPROC

Do dzieła. Na początek zróbmy małą modyfikację:

102   FOR I=39 TO %0 STEP -1
103     MOVE $95C0+1600-I*40,DPEEK(88)
+I*40,40
104   NEXT I

Proszę uruchomić kod. Co się dzieje? Mamy pętlę for-next, która przesyła nam linia po linii naszą grafikę tytułową na początek adresu ekranu. Pamiętamy, że mamy 40 linii, więc licząc od 39 do zera przesuwamy wszystko linia po linii, dostając odwrócony obraz... Dodajmy sobie w linii 103 małe opóźnienie, aby się przyjrzeć, jak to wygląda:

103 MOVE $95C0+1600-I*40,DPEEK(88)+I*40,40:PAUSE 10

Teraz wszystko widać jak na dłoni. W linii 103 możemy oczywiście od razu wyliczyć adres końca grafiki (1600 bajtów szesnastkowo to $640, $95C0+$640=$9C00, pamiętamy że liczymy od zera, czyli $9BFF), wtedy zadziała nieco szybciej (mam mniej liczenia), ale dla naszego przykładu nie robi to różnicy (dobra, dłuższy kod mamy - ale o tym w ostatnim odcinku będzie). Dodajmy nieco więcej "życia" do intra. Mamy 192 linie, najpierw wyświetlmy naszą grafiką na dole ekranu:

103 -MOVE $95C0+1600-I*40,DPEEK(88)+6000+I*40,40:PAUSE 10

Pamiętamy o czasowym zapisywaniu gry (SAVE"D:GRA2.TB" - przypominam tylko) i sprawdzamy. Działa? Działa. Skąd wartość 6000? To proste - nasza grafika ma 1600 bajtów, cały ekran to 7680 - od wielkości ekranu odejmujemy 1600  bajtów, pamiętamy, że liczymy od zera więc odejmujemy jeszcze 40 bajtów, z pewnych przyczyn chcę mieć jedną linię pustą - więc odejmuję jeszcze 40 bajtów... Teraz wszystko przesuńmy w górę (wcześniej proponuję usunąć pauzę - już nie jest nam potrzebna):

105   FOR I=151 TO %1 STEP -%1
106     MOVE DPEEK(88)+I*40,DPEEK(88)+I*40-40,1600
107   NEXT I

W linii 105 określiliśmy skąd przesuwamy nasz obraz (od której linii) i do której (wartość jeden, bo linijkę dalej przesuwamy na adres ekranu), w linii 106 wpisujemy jak przesuwamy. Proszę się pobawić wartościami zmieniając 40 na inne wartości (najlepiej wielokrotność czterdziestu).
Dobrze, mamy napis na górze, ale... Odwrócony. Coś z tym trzeba zrobić... Można to zrobić przepisując z buforem bezpośrednio z ekranu nasze dane lub wykorzystać nasz obrazek z pamięci (ja wolę tak zrobić). Dopiszmy kawałek kodu:

109   FOR I=%0 TO 39
110     MOVE DPEEK(88)+40,DPEEK(88),1600
111     MOVE $95C0+I*40,DPEEK(88)+1560,40
112   NEXT I

Linia 110 przesuwa nam obrazek w górę, natomiast w linii 111 pobieramy jedną linię z naszego obrazka i zapisujemy ją jako ostatnia linia obrazka tytułowego na naszym ekranie. W ten sposób w prosty sposób uzyskaliśmy prosty efekt rolowania obrazka tytułowego.
Zakładam, że w intrze chcemy też wykorzystać grafikę z naszej konwersji. Jesteśmy w trybie graficznym, nic nie stoi na przeszkodzie, wykorzystajmy grafikę T7, ale najpierw zróbmy sobie część ramki - bo czemu nie? Zasada jest taka, że  instrukcja MOVE (lub -MOVE, która działa "od tyłu") możemy się poruszać na ekranie (bez sztuczek) na granicy pełnych bajtów. Nasze obrazki mają 80x80px, więc narysowana część ramki nie powinna nachodzić nam na pełne bajtu obrazka - trzeba uważać szczególnie na linię pionową. Sprawa jest prosta - każdy bajt (w naszym trybie) to odpowiednik ośmiu pikseli. Spróbujmy dodać kod:

120   COLOR %1
121   PLOT 42,50:DRAWTO 140,50
122   PLOT 46,46:DRAWTO 46,140
125   FOR I=%0 TO 79
126     MOVE $8EC0+I*10,DPEEK(88)+2086+I*40,10
127   NEXT I

Co ten kod robi? To proste:
Linia 120 - ustawia nam kolor
Linia 121 - rysuje poziomą część ramki
Linia 122 - rysuje pionową część ramki
U mnie jest to tak dobrane, aby była drobna przerwa między naszym obramowaniem a rysunkiem. Proszę pobawić się tymi wartościami. Pozostałe linie dodają nam rysunek. Proszę teraz uruchomić program.
Coś nam tu chyba nie pasuje, prawda? Mała modyfikacja linii 142 załatwi nam sprawę:

142 COLOR %1:TEXT 10,145,"Tu b dzie intro"

Prawda, że lepiej? To na zakończenie dzisiejszej lekcji jeszcze jedna, drobna modyfikacja wyświetlania obrazka, według mnie uatrakcyjniająca nasze dzieło:

125 FOR I=%0 TO 78 STEP %2
126   MOVE $8EC0+I*10,DPEEK(88)+2086+I*40,10
127   MOVE $91D6-I*10,DPEEK(88)+5246-I*40,10:PAUSE %2
128 NEXT I

Analizę pozostawiam Wam. Jak zwykle oczekuję komentarzy, czy wszystko jest jasne. W następnym odcinku dodamy sobie teksty do intra.
W załączniku atr z bieżącą wersją - pracujemy na wersji gra1.tb, dochodzimy do wersji gra2.tb. Smacznego.

Ostatnio edytowany przez Sikor (2019-12-17 22:21:28)

Post's attachments

roboczy_big_po.7z 71.85 kb, liczba pobrań: 8 (od 2019-12-17) 

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

113

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

Sikor napisał/a:

Poke 756,$9c (kto przypomni, co to robi?)

Pierwszy! To oczywiście nowy adres naszego fontu:-)
Przeczytałem dokładnie cały odcinek, uruchomiłem sobie nowe elementy, bardzo fajnie to wygląda, jak na pisanie w Basicu (oczywiście Turbo), to wygląda zachęcająco i już jest wrażenie, że można zrobić w taki sposób interesującą grę. Dzięki Sikor za kolejny odcinek.

114

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

Dzięki wink Zobaczymy co inni powiedzą, a właściwie napiszą wink W następnej części (jak motywacja i czas pozwolą) chcę zamknąć intro wink

Sikor umarł...

115

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

Nigdy nie przepadałem za hiresem w Atari, zawsze jakoś wolałem grafikę kolorową w 160x192 w trybie 15 niż 320x192 w trybie 8.
Natomiast niedawnymi czasy dość dużo składałem grafiki w trybie 15 i też pikselowałem różności w tym trybie ostatnio, więc może dlatego mi się przejadł, bo teraz jak zobaczyłem ten początek intra, który przygotowałeś w GR.8, to spodobał mi się ten wcześniej nieszczególnie lubiany przeze mnie tryb. Hmm, może się przeproszę z trybem 8 jednak i też coś sobie w nim kiedyś zaprogramuję:-)

116

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

Super, dzisiaj siadam i wracam do kursu. Dziękuję za kontynuację smile

117

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

@Mq: jak się podkoloruje duszkami lub zrobi przerwania DL-ki (ale tu już assembler potrzebny) to może wyglądać świetnie. Jest jeszcze kwestia dobrania koloru - ale u nas akurat czarny pasuje, bo kosmos wink
@lopez: napisz jak wrażenia

Sikor umarł...

118

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

No to w końcu usiadłem na kursu ponownie. Sikor WOW nie spodziewałem się efektu smile

Proszę poprawcie mnie, jeśli źle zrozumiałem, ale wartości w liniach 126/127 (2086/5246) są to wartości ekranu?

- cały ekran ma 7680 bajtów
- 1 linia ma 160 bajtów
- wszystkich linii jest 48

2080 to jest 13 linia
5120 to jest 32 linia

To teraz wartość 2086 rozumiem, bo to przesunięcie o 6 znaków w prawo, ale dlaczego 5246 a nie 5126?

ps. ok już załapałem po prostu 5246 to odjęcie 34 od linii 33 (5280) bo w tym wypadku liczymy od tyłu.

Z niecierpliwością czekam na ciąg dalszy smile

Ostatnio edytowany przez lopez (2019-12-22 11:54:42)

119

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

1 linia ma 40 bajtów: 320/8=40, są to linie rybu graficznego. Linii jest ogólnie 192. czekaj, spojrzę w kod:
linie 126 i 127 to wyświetlanie obrazka od początku/od końca co drugą linię, aby zrobić ładny (według mnie) efekt.  Przyjrzyjmy się dokładniej:

125 FOR I=%0 TO 78 STEP %2
126   MOVE $8EC0+I*10,DPEEK(88)+2086+I*40,10
127   MOVE $91D6-I*10,DPEEK(88)+5246-I*40,10:PAUSE %2
128 NEXT I

2086/40=52 z kawałkiem, czyli 52 linia ekranu plus przesunięcie o resztę w prawo. Analogicznie drugi kawałek, ale tam pobieramy dane od końca. Szerokość naszego obrazka to 10 bajtów (80 pikseli). To chyba wyjaśnia sprawę? Zresztą do większości i tak doszedłeś sam wink
P.S.
Cieszę się, że ktoś to ze mną dłubie wink

Sikor umarł...

120

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

miałem zapytać jak chronisz fonty przed przypadkowym nadpisaniem, ale już widzę wink

Ostatnio edytowany przez Pin (2019-12-29 00:47:03)

ADRES: pin@atari.pl - konto zlikwidowane. Aktualny adres: pin(at)atari8.info