Instalacja Biblioteki Allegro w środowisku Turbo Pascal

0

Dobra. Mam bibliotekę allegro (Wersję 5.2 jakby co choć myślę że to nie ma większego znaczenia w kwestii konfiguracji środowiska (każda instaluje się raczej tak samo)) i mam zamiar dołączyć ją do IDE TP.7. Nigdy tego nie robiłem więc poszperałem na oficjalnej stronie wraz z dokumentacją na SourceForge. Nigdzie nie ma instrukcji instalacji biblioteki (które pliki odnieść do jak wyglądających ścieżek i w której zakładce (próbowałem wielu kombinacji)). Do projektu wkleiłem przykładowy kod źródłowy inicjujący tą bibliotekę oraz wskazałem ścieżki do niej z tym że nie jestem pewien jak wyglądać ma ścieżka i do którego pola konkretnie ma ona zostać przypisana. Zakładam że UNITS skoro w kodzie wywoływana jest za pomocą funkcji USES która wiadomo do czego służy. Mam tam (w kodzie) dwie biblioteki (allegro5 oraz allegro5.2font) więc te pliki wrzuciłem do folderu UNITS (W folderze z TP.7) a w zakładce UNITS podałem dokładne ścieżki zakończone pełnymi nazwami plików zakończone odpowiednimi skrótami formatów ów plików. Pomyślnie udawało mi się dołączyć bibliotekę za pomocą C++ CodeBlocks ale na TP.7 już nie jest tak kolorowo. Z samego TP.7 potrafię korzystać przykładowo konfigurować środowisko czy wywoływać tryby graficzne za pomocą wstawek assemblerowych ale przy próbie dołączenia Allegro poległem. Jeśli coś pomyliłem w powyższym tekście albo pominąłem, z góry przepraszam. Jestem zmęczony po całym dniu użerania się z tym. Poniżej zamieszczam ten przykładowy kod. Idę spać, to mi dobrze zrobi ;D

PROGRAM HelloWorld;
(* First Allegro program. *)

USES
  allegro5, al5font;

VAR
  Timer: ALLEGRO_TIMERptr;
  Queue: ALLEGRO_EVENT_QUEUEptr;
  Event: ALLEGRO_EVENT;
  Display: ALLEGRO_DISPLAYptr;
  Font: ALLEGRO_FONTptr;

  Redraw, EndProgram: BOOLEAN;

BEGIN
  al_init;
  al_install_keyboard;

  Timer := al_create_timer (1 / 30);
  Queue := al_create_event_queue;
  Display := al_create_display (320, 200);
  Font := al_create_builtin_font;

  al_register_event_source (Queue, al_get_keyboard_event_source);
  al_register_event_source (Queue, al_get_display_event_source (Display));
  al_register_event_source (Queue, al_get_timer_event_source (Timer));

  Redraw := TRUE;
  EndProgram := FALSE;

  al_start_timer (Timer);
  REPEAT
    al_wait_for_event (Queue, @Event);

    IF Event.ftype = ALLEGRO_EVENT_TIMER THEN
      Redraw := TRUE
    ELSE IF (Event.ftype = ALLEGRO_EVENT_KEY_DOWN)
    OR (Event.ftype = ALLEGRO_EVENT_DISPLAY_CLOSE)
    THEN
      EndProgram := TRUE;

    IF Redraw AND al_is_event_queue_empty (Queue) THEN
    BEGIN
      al_clear_to_color (al_map_rgb (0, 0, 0));
      al_draw_text (Font, al_map_rgb (255, 255, 255), 0, 0, 0, 'Hello, World!');
      al_flip_display;

      Redraw := FALSE
    END
  UNTIL EndProgram;

  al_destroy_font (Font);
  al_destroy_display (Display);
  al_destroy_timer (Timer);
  al_destroy_event_queue (Queue)
END.
3

Czekaj, Ty próbujesz użyć w miarę nowej wersji biblioteki z kompilatorem sprzed 25 lat? Zdajesz sobie sprawę ile mogło zajść zmian w formacie DLL przez ten czas?

Edit: z tego, co widzę to chyba TP nigdy nawet nie miał możliwości budowania 32-bitowych binarek, więc to nie ma prawa działać.

Edit2: coś mi się kołatało, że Allegro kiedyś obsługiwało DOSa i faktycznie. Wersje do 4.2 są kompatybilne, ale możesz mieć problemy ze znalezieniem bindingów. Prościej porzucić tę archeologię i napisać to w czymś normalnym.

6
matej47 napisał(a):

Dobra. Mam bibliotekę allegro (Wersję 5.2 jakby co choć myślę że to nie ma większego znaczenia w kwestii konfiguracji środowiska (każda instaluje się raczej tak samo)) i mam zamiar dołączyć ją do IDE TP.7.

No to nie pozostaje nic innego jak życzyć Ci powodzenia. :D

Biblioteka* ta została stworzona w Lazarusie i głównie dla niego jest przeznaczona — pobierz go, zainstaluj i korzystaj. A o Turbo Pascalu najlepiej zapomnij, bo jest to IDE/kompilator biedniejszy niż dzieci w Bangladeszu.

* Tzn. nie sama biblioteka, a pascalowe nagłówki zwane Allegro.pas — libka napisana jest w C.

0

Kocham DOS'a tak samo jak Amigę czy Szaraka. Nie wyobrażam sobie nauki bez ogarnięcia absolutnych fundamentów. Czasami zdarzy mi się skorzystać z Win 3.11 lub ewentualnie Free Pascal'a (zawiera kompilator wstecznie kompatybilny z DOS'em) nie mniej wyłącznie w celu zachowania kompatybilności z aktualnościami. Nie lubię iść na skróty które pomijają praktycznie cały proces twórczy (To tak jakby przerabiać silnik jakimś niskopoziomowym językiem (o ile na to pozwalają owe przykładowe programy bo po co przerabiać ogół gdy można wypracować całość samodzielnie)). Mam ochotę pobawić się trochę nowinkami technicznymi niezależnych twórców i tyle, taki spontan. Generalnie to samodzielnie piszę ray-tracer'y, engine'y czy biblioteki ale żeby nie było, uczę się aktualnie OpenGL'a (Nie mylić z Vulcan'em) który sam powstał przy współpracy kilku konkurentów Microsoft'u jako alternatywa DirectX'a. Sprawdzę lazarus'a bo Allegro na FPC faktycznie może nie pójść chociaż naszemu rodakowi udało się uzyskać zamierzony przeze mnie rezultat na bardzo podobnej bibliotece przy użyciu Windows'a operującego na trybie rzeczywistym https://www.youtube.com/watch?v=hPmJB0mS-GA. Nie chrzańcie że ten tzw. powyżej Bangladesz nie ma sensu bo sam pan ARHON poszedł o krok dalej niż ja i wykonał dobrą robotę osiągając cel przy użyciu ówczesnej technologii gdzie ja posługiwałem się jedynie emulatorami (ze względów obecnej sytuacji finansowej) a mowa o https://www.youtube.com/watch?v=MYa4JdVMd7A, oczywiście bez urazy ;) . Więc...?

1
matej47 napisał(a):

Kocham DOS'a tak samo jak Amigę czy Szaraka.

A kochaj sobie co/jak chcesz. BTW było ostatnio kilka coming-outów

Ale nie łącz muzeum z nowoczesną technologią, bo się nie uda.

0

Kolega wybił mi ten głupi pomysł z głowy i proszę Moderatora o usunięcie tematu. Nikomu to się nie przyda.

3

Nikomu to się nie przyda.

Wręcz przeciwnie, może się za jakiś czas trafi kolejny zawodnik, któremu się przyśni wyjęcie dziadkowi z trumny pudełka z dyskietkami od Turbo Pascala, a po przeczytaniu niniejszego wątku uzna, że to jednak bardzo kiepski pomysł. Uważam, że warto to zostawić dla przyszłych pokoleń, jako ostrzeżenie i informację, że pewnych rzeczy nie powinno się robić.

A @matej47 należy się wielka pochwała - że umiałeś przyjąć uwagi chłopaków, nie obraziłeś się, nie upierałeś że wiesz lepiej - tylko przemyślałeś co Ci napisali, zastanowiłeś się i podjąłeś (jedyną dostępną) sensowną decyzję.

1

@matej47: jeśli tak to spoko. Tylko nie próbuj łączyć nowych bibliotek ze starym systemem. Może ewentualnie ten stary Allegro jak chcesz się pobawić.

Jeśli chodzi o OpenGL to jednak Vulkan wydaje się chyba lepszą opcją dla takich grzebaczy. Tylko trochę się trzeba napocić, żeby coś narysować, ale potem jakoś idzie. I nie powstał jako konkurencja dla DX, tylko jako otwarty następca Mantle od AMD. Potem przyszedł DX12, który też powstał przy współpracy z AMD, bo oni projektowali podzespoły Xboxa.

2

@matej47: jeśli Twoim celem jest napisanie gry na jakieś stare i zapomniane platformy, to powinieneś skorzystać z oprogramowania, które w czasie świetności tych platform było wykorzystywane do tworzenia oprogramowania. Jeśli chodzi o DOS-a to Turbo Pascal się nada, Lazarus z FPC też (jest znacznie wygodniejszy niż TP7). Co do biblioteki, to stare Allegro by się nadało, ale nie wiem jak z dokumentacjami i przykładami.

A jeśli byś chciał tworzyć dla współczesnych systemów, to oprócz Allegro jest też świetny SDL.

1

@furious programming: Podobna bajka jest związana z systemem operacyjnym linux :-)
Powiedz przeciętnemu klikaczowi, że używa odmiany linuxa na komórce, to zrobi oczy jak spodki :-)

0

@pstmax: nie wiem o jakiej bajce piszesz.

0

To że czegoś się nie da znaczy tylko tyle że ktoś jeszcze tego nie wymyślił, to że cie boli znaczy że jeszcze funkcjonuje (nie obumarło) a to że nie rozumiesz znaczy że nie wiesz i nie staraj się wykorzystać bo i tak nie rozłożysz na czynniki pierwsze. Taksonomia nauczania bloom'a, hierarchia potrzeb maslova (...). Nie rób sobie krzywdy przez rzeczy na które nie masz wpływu, licz tylko na siebie jeśli umiesz liczyć. A w ogóle to:
https://www.youtube.com/watch?v=vkUwT9U1GzA
https://www.youtube.com/watch?v=N8elxpSu9pw
https://www.youtube.com/watch?v=M-U8XEUzFbM
Taki projekcik na potwierdzenie tezy: http://os4depot.net/?function=showfile&file=game/misc/amicraft.lha .
Gdyby tak nie było, nie byłoby pasjonatów -----> pomysłu ------> problematyki -----> kompatybilności wstecznej -----> emulatorów ;)
Wiedziałeś że każdy atom jest ze sobą połączony? Każdy!
everythink.jpg

1 użytkowników online, w tym zalogowanych: 0, gości: 1