Seite 2 von 2

Re: DOS Spieleprojekt mit DJGPP

Verfasst: Fr 4. Dez 2015, 13:12
von go32
@An die Moderatoren!

Bitte einmal löschen, wegen Doppelposting!

S o r r y !

Re: DOS Spieleprojekt mit DJGPP

Verfasst: Sa 5. Dez 2015, 11:37
von go32
@GMBigB:

Ich muss noch ergänzen, dass ich die Allegro als statische Bibliothek für go32v2 (djgpp) brauche. Dynamische Bibliotheken werden von diesem DOS Extender nicht unterstützt.

Ich arbeite inzwischen auch an der Umsetzung weiter.

Die passende DOS Version der Allegro Bibliotheken im Binärfprmat wäre in der Tat eine große Hilfe. Die GUI für die ich das brauche ist eh GPL.

Re: DOS Spieleprojekt mit DJGPP

Verfasst: Fr 18. Dez 2015, 17:54
von GMBigB
Sorry, total verschwitzt... ist das Problem noch aktuell? Ich habe mal eine Allegro 4.2.3.1 angehängt - das ist die letzte 4er-Version, die es für DOS gibt. Die 4.4 enthält bereits Windows-Bestandteile. Ich müsste mal einen Diff machen - vielleicht sind auch Patches für die 4.2.3.1 drin. Leider ist die Zeit immer so verdammt knapp. Ich hoffe um Weihnachten rum ist es etwas ruhiger.

Du kannst ja aber mal ausprobieren, ob sie so funktioniert. Der DOS-Extender sollte egal sein. Bei mir funktioniert sie mit CWSDPMI, DOS4GW und DOS32A - ich denke, dass GO32 dann auch kein Problem darstellen wird. Ansonsten immer Druck machen und zur Not eine PM schreiben, wenn es wieder zu lange dauert. ;-)

So ein Mist... kann die Datei hier nicht anhängen, weil sie zu groß ist und weder .zip noch .a erlaubt sind. Bitte hier runterladen:
http://www.game64.de/liballeg.zip

Re: DOS Spieleprojekt mit DJGPP

Verfasst: Do 14. Jan 2016, 14:50
von go32
Danke, @GMBigB!

Die Übersetzung scheint zu klappen. Dennoch wäre ein Diff gut zu gebrauchen, damit ich weiß, welche Teile mit Sicherheit nicht funktionieren werden. Ich habe in den Pascalquellen die external Deklarationen angepasst:

external SHARED_LIBRARY_NAME NAME 'allegro_funktion';

geändert in:

external {$IFNDEF GO32V2}SHARED_LIBRARY_NAME{$ENDIF} NAME 'allegro_funktion';

wobei 'allegro_funktion' die konkrete Bibliotheksfunktion in der liballeg.a ist.

Natürlich habe ich {$LINKLIB liballeg.a} in der allegro.sfg Includedatei ergänzt, die ja in den Pascal-Allegro Units überall per $Include Dierektive eingebunden wird.

Nun aber verlangt Freepascal die Verwendung des externen Linkers für Go32, unter Windoes scheint FPC einen internen (im Compilertool eingebauten Linker) zu verwenden. Jedenfalls übersetzt Lazarus nur bis zur .o Datei des ausführbaren Testprogrammes. und erzeugt eine Textdatei mit Compileranweisungen. SO enttehen pro Allegro-Anwendung die Dateien myprog.o, der Objektcode und eine Datei myprog.compiled.

letztere sieht so aus:

<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<Compiler Value="c:\Users\denker_1\Downloads\LazarusPortable\App\lazarus\fpc\2.6.4\bin\i386-win32\fpc.exe" Date="1162591227"/>
<Params Value=" -MObjFPC -Scghi -O1 -Tgo32v2 -g -gl -vewnhi -FiF:\pp\projects\allegro\examples\lib\i386-go32v2 -FuF:\pp\projects\allegro\lib -FuF:\pp\projects\allegro\examples\ -FUF:\pp\projects\allegro\examples\lib\i386-go32v2\ -l exalpha.lpr"/>
<Complete Value="False"/>
</CONFIG>

Diese wird von Lazarus erzeugt.