kategoria: Blitz
[#1] Nauka Blitz Basic
Witam.

Postanowiłem się zmierzyć z językiem Blitz Basic. Zacząłem od instalacji, przypisania assignów oraz wypakowania wszystkiego, co potrzebne. Posługuję się książką Adama Zalepy "Bitz Basic Programowanie od podstaw".

Czy jest tu ktoś znający w miarę ten język? Chciałbym kilka problemów rozwikłać...

1#
Spisałem z książki kod sprawdzający wersję procesora oraz systemu, który podaje, jaką wersję się posiada w swojej Amidze. Stworzyłem ekran, jednak wszystko zostaje wypisywane w oknie CLI, a nie w ekranie, który otwieram.

2#
Jak napisać program, żeby nie trzeba było uruchamiać w CLI, a bezpośrednio w WB? Uruchamiając mój programik otwiera się okno, ale po kliknięciu myszką wyskakuje mi error 87000004. To przez nie otwarcie pliku w CLI.

Oto kod programu:
Screen 1,5,"System information"

a=Processor
b=ExecVersion
If a=0 Then a$="68000"
If a=1 Then a$="68010"
If a=2 Then a$="68020"
If a=3 Then a$="68030"
If a=4 Then a$="68040"
NPrint "Wykrylem procesor: ",a$

If b=33 Then b$="wersja 1.2"
If b=34 Then b$="wersja 1.3"
If b=36 Then b$="wersja 2.0"
If b=39 Then b$="wersja 3.0"
If b=40 Then b$="wersja 3.1"
If b=46 Then b$="wersja 3.1.4"
NPrint "Wykrylem system : ",b$


MouseWait
End
[#2] Re: Nauka Blitz Basic

@tukinem, post #1

Hej, z racji że w ogóle nie znam Blitz Basica, tylko wrzucę info, że gdybyś zajął się językiem C, to chętnie służyłbym pomocą.

Z naszego forum, to np. Piotr "PCH" Chmielewski zajmuje się tym językiem.
[#3] Re: Nauka Blitz Basic

@Hexmage960, post #2

To zaczekam, aż się pojawi. Może odpisze...
[#4] Re: Nauka Blitz Basic

@tukinem, post #1

Pierwsz

Jak napisać program, żeby nie trzeba było uruchamiać w CLI, a bezpośrednio w WB?
Uruchamiając mój programik otwiera się okno, ale po kliknięciu myszką wyskakuje mi error 87000004.

W pierwszej linijce pisanego programu ma być komenda WBstartup
[#5] Re: Nauka Blitz Basic

@Hexmage960, post #2

Hehe, 'zajmuje' to chyba za dużo powiedziane ale mimo wszystko myślę, że mogę pomóc.

Co do uruchomienia z wb to już Norbert napisał.
Co do tekstu na twoim ekranie...
Otwórz tam okno a następnie przekieruj do niego komendę Print

WINDOW 0,10,10,200,100,$1|$2|$1000,"OKNO",0,1
WINDOWOUTPUT 0


Edit
Te dwie powyższe linie dopisz pod komenda Screen

Ostatnia aktualizacja: 06.03.2022 19:52:05 przez pch
[#6] Re: Nauka Blitz Basic

@pch, post #5

OK. Dzięki. Działa.

Teraz mam takie pytanie, czy nie da się tego wypisać bez okna po prostu w samym ekranie, tak jak to ma miejsce w Amosie?
[#7] Re: Nauka Blitz Basic

@tukinem, post #6

Jeśli chcesz pisać gry, a tak zakładam to podejście w Blitzu jest jednak nieco inne niż w Amosie. Tzn w Blitz schodzi nieco niżej do sprzętu niż Amos i zanim napiszesz na dedykowanym ekranie "hello world" musisz kilka rzeczy poustawiać.
Teoria...
Po pierwsze interesuje cię programowanie w trybie BLITZ. Wyłączany jest wtedy system i masz maszynę do dyspozycji.
Interesuje cię użycie tzw biblioteki Display a nie starej Slices. Display pozwala na programowanie nawet dla AGA i jest bardziej elastyczna. Jest też nowocześniejsza od poprzedniej Slice.
To jest teoria ale może pomoże Ci jakoś szukać w sieci. Była dokumentacja w formie HTMLa w sieci ale zniknęła a szkoda bo była bardzo dobra. Znajdziesz natomiast pdfa (mniej wygodny, ale jest) gdzie te rzeczy są opisane.
Na początek proponuję przejrzeć naprawdę proste przykłady dla trybu BLITZ (podkatalog blitzmode) w katalogu Examples Blitz'a. W nich będziesz miał pokazane jak:
- zaalokować bitmapę
- zdefiniować copper listę
- zdefiniować paletę
- połączyć powyższe w disaplay i wyświetlać np tekst (tak jak chcesz) czy boby.

Jak widzisz Amos to to nie jest, ale coś za coś.
[#8] Re: Nauka Blitz Basic

@tukinem, post #6

Jasne, tylko musisz inaczej podejść do sprawy.
Komenda SCREEN otwiera ekran intuition więc potrzebujesz okna by wyświetlić tekst.

Użyj CREATEDISPLAY i będziesz mógł pisać bezpośrednio po bitmapie która jest wyświetlana.

Tylko nie pomieszaj komend odpowiedzialnych za SLICES z tymi od DISPLAY bo nic nie zobaczysz, heh.

'Biblioteka' DISPLAY to następca / rozwinięcie SLICES więc raczej używaj DISPLAY - poczytaj o tym w manuału bo ja nie mam teraz dostępu ani do amigi ani emulatora więc nie podam przykładu tak od ręki.
[#9] Re: Nauka Blitz Basic

@c64portal, post #7

Po nauce Amosa jestem ciekaw do czego używa się copper listy, bo nigdy nie używałem tego. Wiem jak w Amosie zrobić na ekranie flagę poprzez CopperList, ale jak to wykorzystywać, to nie mam pojęcia...

W książce nie mam nic o CreateDisplay. Przykładów w mojej wersji Blitza również nie mam. Mam wersję ściągniętą z Amigafuture.de.

Ostatnia aktualizacja: 07.03.2022 15:53:09 przez tukinem
[#10] Re: Nauka Blitz Basic

@tukinem, post #9

link
Tu jest odmlodzona/poszerzona wersja manuala
[#11] Re: Nauka Blitz Basic

@pch, post #10

Tragedia z czarną magią ręce mi się same rozkładają niestety...
[#12] Re: Nauka Blitz Basic

@tukinem, post #11

Heh, nie wiem co Cię tak przeraziło (właściwie to też nie wiem czy link co podalem wciąż działa bo sam sprawdzić nie mogę) ale jeśli działa to pobierz plik z lnka i to zainstaluj.
Blitz mial sporo poprawek wydanych a w tym archiwum powinny być wszystkie dołączone i chyba instaler jest tak napisany by to od razu ogarnąć.

Instalując blitza samemu od zera będziesz musial trochę się napracować (użyj wtedy 'ultimate blitz2' zamiast zwykłej i stalki blitz2 oraz 'ultimate bb updated installer' z aminetu)




Ostatnia aktualizacja: 07.03.2022 16:55:16 przez pch
[#13] Re: Nauka Blitz Basic

@pch, post #12

Ja swojego sam instalowałem. Tzn archiwa wypakowałem, dodałem assigny i działa SuperTED.

Przeraża mnie to, że trzeba mnóstwo rzeczy definiować. Przyzwyczajenia mam amosowe, więc tworząc ekran (Display) nie musiałem nigdy ręcznie wpisywać palety kolorów, tymbardziej copper listy

Wczytywanie sprajta nie działa na zasadzie amosowej, czyli wczytywanie jednego obrazka i wczytywanie z niego sprajtów za pomocą współrzędnych z tego co widzę.

Ale za to widziałem że można używać sprajtów szerszych niż 16 pikseli.
[#14] Re: Nauka Blitz Basic

@tukinem, post #13

Możesz jak najbardziej wczytać sprajty z jednego obrazka
Załaduj bitmapę, wytnij SHAPE komenda GETASHAPE (podając właśnie pozycje) i zamien tego 'shape' na sprajta uzywajac GETASPRITE
[#15] Re: Nauka Blitz Basic

@pch, post #14

Shape to jest tak jakby odpowiednik boba? Czy to jest po prostu wycinek ekranu?

Ostatnia aktualizacja: 07.03.2022 17:45:34 przez tukinem
[#16] Re: Nauka Blitz Basic

@tukinem, post #15

Tak, shape to blitzowy bob
[#17] Re: Nauka Blitz Basic

@pch, post #16

Narazie instaluję sobie BlitzBasic od Ciebie na kartę pamięci. Będę testować go na prawdziwej Amidze później. Nie znam składni wielu komend. To takie błądzenie na ślepo. Brakuje mi takiej książki jak mam o Amosie. Tylko nie książki Zalepy, bo tam jest kompletnie nie to, czego oczekiwałem
[#18] Re: Nauka Blitz Basic

@tukinem, post #13

Nie przerażaj się :) Po prostu tak się programuje na Amidze.
Blitz i tak dodaje dość duży poziom abstrakcji. Nie tak duży jak Amos, ale zawsze większy niż w C czy ASMie.

PCH dobrze ci podpowiada, ale ja sugeruję abyś na spokojnie zerknął najpierw na przykłady.
tutaj masz link - spakowałem Ci takie jak ja mam w blitzu... blitz examples
znajdziesz tam i otwieranie ekranu i boby (shape'y), i przewijanie ekranu... itp
[#19] Re: Nauka Blitz Basic

@tukinem, post #11

Tak na szybko (może zawierać błędy):

LoadShape 0,"dh0:bob.iff" ;wczytuje obraz boba jako "bank" nr 0

VWait 100 ;konieczne przez wejściem do BLITZ MODE !
BLITZ ;włączamy BLITZ MODE

; poniższy kod tworzy 32 kolorowy ekran i ustawia paletę
Slice 0,44,320,256,$fff8,5,8,32,320,320
Use Slice 0
BitMap 0,320,256,5
Use BitMap 0
Show 0
BitMapOutput 0 ;(N)Print do bitmapy zamiast CLI
InitPalette 0,32
RGB 0,0,0,0 ;kolor 0
RGB 1,$F,0,0 
RGB 2,0,$F,0
RGB 3,0,0,$F ;kolor 3
RGB 4,...
RGB 5,... ;i tak dalej, można inaczej, poszukaj w manualu!
CLS 0 ;czyszczenie ekranu kolorem 0

; prosty przykład pętli gry
Repeat
  fire=Joyb(1)
  x=Joyx(1) ; -1 = lewo, 1 = prawo
  y=Joyy(1) ; -1 = góra, 1 = dół
  Blit 0,x,y ;wkleja boba z "banku" 0 -> patrz wyżej LoadShape 0
  VWait
Until fire

; kończymy program i zwalniamy zasoby
Free Palette 0
Free BitMap 0
FreeSlices
AMIGA ; wyłączamy BLITZ MODE
End
[#20] Re: Nauka Blitz Basic

@forge, post #19

Czy komenda VWait to jest odpowiednik WaitVBL z Amosa?
[#21] Re: Nauka Blitz Basic

@tukinem, post #17

Na moim Chomiku masz wszystko to co jest potrzebne do nauki BlitzBasica. Książkę w formie .pdf możesz sobie wydrukowac na papierze i zabindować. mnie koszta wyniosły 38pln.
[#22] Re: Nauka Blitz Basic

@tukinem, post #20

Czy komenda VWait to jest odpowiednik WaitVBL z Amosa?

Tak.

Znalazłem kilka instrukcji w AmigaGuide, może się przydadzą - link.
[#23] Re: Nauka Blitz Basic

@Stoopi, post #21

Właśnie wszystko jest po angielsku. Nie mogę zrozumieć tych różnych trybów pracy. Amiga/ Blitz/ Slice... każdy tryb ma różne komendy... używając Amosa na przykład do dzisiaj często korzystam z książki.
[#24] Re: Nauka Blitz Basic

@forge, post #22

Udało mi się otworzyć ekran. Udało mi się wczytywanie znaków poszczególnych klawiszy do zmiennych.
Teraz jak wczytać grafikę IFF jako tło ekranu? Czyszczę ekran komendą CLS 0. Przypominam, że wszystko działa w trybie BLITZ.

Aha... jak zmienić pozycję kursora przy pisaniu komendą NPRINT? I o raz czy jest komenda zastępcza, tak jak w przypadku AMOSa PRINT i TEXT?

A jeszcze jedno. Czemu mi przestał działać kompilator pod prockiem 68000? Błąd 80000004. Pod drugą konfiguracją mi działa, a nie widzę między nimi różnicy poza systemowym ScreenMode oraz inną wersją WBDock... chociaż tam też jakieś problemy są. Po przełączeniu procka na 020 problemy wszelkie znikają.

Ostatnia aktualizacja: 13.03.2022 18:14:52 przez tukinem
[#25] Re: Nauka Blitz Basic

@tukinem, post #24

Teraz jak wczytać grafikę IFF jako tło ekranu?

Poczytaj o LoadBitMap i DecodeILBM.

jak zmienić pozycję kursora przy pisaniu komendą NPRINT?

Sprawdź Locate, CursX, CursY.

czy jest komenda zastępcza, tak jak w przypadku AMOSa PRINT i TEXT?

???
A przypomnij mi jaka jest różnica między Print a Text.

Czemu mi przestał działać kompilator pod prockiem 68000? Błąd 80000004.

Skąd masz Blitza? Oryginał czy modyfikowany? Spróbuj na czystym Blitzie.
[#26] Re: Nauka Blitz Basic

@forge, post #25

Print At (podajesz wspolrzedne kursora - malo dokladne)
Text wymiary co do piksela,"tekst" - o taką funkcję mi chodzi.

Poza tym zmiana koloru Print to Pen oraz Paper dla tła. Przy Text zmiana koloru to Ink kolor tekstu,kolor tla (lub na odwrot, nie pamietam).

W przykladach nie ma nic o wczytywaniu pliku IFF jako tla. Szukałem w PDFie i tam tez ciezko mi znalezc. Jest cos ale to dziala w trybie Amiga, a tu chodzi o Blitz.

Co do wersji, to mialem ta ktora mi tu podaliscie wraz z instalatorem, ale zauwazylem ze kompilator nie dziala pod 68000, wiec usunalem i wgralem swoja ktora mi dzialala z Amigafuture.de. Niestety teraz i ta nie dziala pod 68000. Najlepsze jest to, ze samo polecenie Create Executable dziala, a Compile and run nie. Chyba bede musial znowu system przeinstalowac.

Ogólnie zauwazylem ze BlitzBasic jest minimalnie szybszy od Amosa. Ale jesli sie uda chcialbym zobaczyc dalej jak bedzie sobie radzil. Na pewno moze wiele wiecej niz Amos (pomijajac tryb Amiga bo tego Amos juz wcale nie posiada).
[#27] Re: Nauka Blitz Basic

@tukinem, post #26

Twoj tok myslenia jest jednak bledny.
Zeby napisac cos bardziej skomplikowanego, musisz opanowac podstawy w jednym palcu i poznac bardziej zaawansowane rzeczy.
Latwiej opanowac teorie i sprawdzic empirycznie jak cos dziala w latwiejszym srodowisku jakim jest AMOS.

Porzuciles Amosa na rzecz Blitz'a a tak naprawde poznales moze z 40% (o ile w ogole tyle) tego co potrzebne do tworzenia grafiki. A wiec przed toba jeszcze jedyne... 60%

Teraz w trudniejszym srodowisku, bedziesz walczyl z miesiac nad jakimis blachostkami a po pol roku napiszesz, ze BlitzBasic jest zbyt wolny i musisz jednak nauczyc sie Assemblera a tam to juz po prostu zginiesz marnie na pierwszym stopniu schodow... i amenT.
To bedzie koniec twojej kariery

bez solidnych fundamentow koloseum nie wybudujesz, chociaz bys stanal na glowie... wroc do podstaw, opanuj je a pozniej rzuc sie na glebsza wode

Ostatnia aktualizacja: 14.03.2022 02:20:11 przez selur
1
[#28] Re: Nauka Blitz Basic

@selur, post #27

Jak miałem opanować resztę Amosa skoro każdy pomysł na grę był mylny.
Pinball nie bo za dużo fizyki.
Scrollowanka nie bo Amos tego nie uciągnie
Wyścigi tym bardziej

przyznaję że bardzo dużo mi wytłumaczyliście wszyscy i pomogliście gdy pisałem gry. Co tu można jeszcze opanować z Amosa? Screeny, sprajty, boby, Double buffer, Dual playfield, Rainbow, rysowanie figur, to opanowałem.

Za Asm nie biorę się. Niech skę tym zajmują ludzie po informatyce.

Nie napiszę że Blitz jest wolny, jeśli ktoś podpowie mi jakie stosuje się sposoby na optymalizację kodu. Przykładowo w Amosie przy sokobanie stosowalem mnóstwo bobów na ppczątku, co spowalniało wszystko. Później z czasem zrozumiałem że to złe rozwiązanie i to zmieniłem. Wiele komend w Amlsie spisywałem z książki np. Rainbow. Tu książki nie ma.
[#29] [post oznaczony jako OT] wyświetl Re: Nauka Blitz Basic
[#30] Re: Nauka Blitz Basic

@tukinem, post #26

Obrazek wgrywasz tak jak podał forge. Użyj
BitMap
By zainicjować bitmape
Jeśli inicjujesz kilka od razu to na końcu musisz dac
Use BitMap
By ustawić sobie na aktualną, która chcesz (Bitmap automatycznie ustawia jako aktualną te co teraz tworzy)

Tera dajesz
LoadBitMap
Czyli ładujesz obrazek z dysku do aktualnie używanej bitmapy stworzonej przez komendę BitMap


Co do Print i Locate to nie jest tak rozowo
Locate ustawi kursor (czyli pozycje gdzie pisać tekst) z dokładnością jaka tam podasz w pionie.
Niestety w poziomie zaokrągli do najbliższego dzielenia przez 8 (by komenda Print była szybką)
Czyli dając Locate 10,17
Wyswietli tekst w poziomie na pozycji x=8

Mozna to łatwo obejsc tworząc obrazek z własnymi fontami które powycinasz, przypiszesz do shape-ów i potem tylko blitujesz litery dokładnie tam gdzie chcesz


Poniżej obrazek z literami oraz fragment kodu gdzie je wycinasz (czerwona ramka) i procedura ( i makro by przyspieszyć) które je wpisują na ekran

Wybacz za jakość i nieczytelność mojej odpowiedzi ale naprawdę nie mam teraz warunków by pisać na forum



Hmmm
Chyba obrazki nie przeszły...

Ostatnia aktualizacja: 14.03.2022 12:33:40 przez pch
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem