amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > SDL-Programm portieren [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

01.08.2009, 23:59 Uhr

Reth
Posts: 1812
Nutzer
Hallo zusammen,

ich versuche gerade krampfhaft folgendes Spiel für AOS4 zu compilieren:

GigaLoMania

Habe mir dazu den Source ganz unten auf der Webisite runtergeladen und mal soweit hinbekommen, dass er compiliert wird und gestartet werden kann.

Das Original habe ich für den Amiga selbst, daher auch kein Problem an die Dateien zu kommen!

Dafür habe ich quasi überall die WIN32 Sektionen auskommentiert und mich auf die Linux-Bereiche konzentriert und alles was mit fmod zu tun hat komplett auskommentiert.
Dabei habe ich auch den Aufruf von SDL_main auskommentieren müssen, da diese Funktion vom GCC trotz Angabe aller Pfade und Header nicht gefunden wurde (ist aber in den SDL Headern vorhanden)!

Fehlermeldung: SDL_main was not declared in this scope

Das Problem ist, dass ich beim Start im Fullscreenmodus nur nen schwarzen Bildschirm bekomme, sonst nix und ohne Fullscreen öffnet sich nicht einmal ein Fenster! Beim Starten ohne fullscreen PArameter kommt bald ein GR. Allerdings kann ich mit GRs und ihren Crashlogs nichts anfangen! Wie kann man denn aus diesen wertvolle Rückschlüsse auf die Ursache im eigenen Code ziehen?

Es hängt wohl alles damit zusammen, was in der Methode openscreen() in game.cpp passiert, denn dort hab ich alles, was nichts mit fullscreen zu tun hat auskommentiert (da dort v.a. nur Windos-API-Funktionen zum Einsatz kamen). Daher passiert beim Start ohne "fullscreen" Parameter auch nix (sprich kein Fenster geht auf etc.).

Nun bin ich totaler Anfänger, was SDL und Ports auf den Amiga (AOS4) anbelangt!
Daher hab ich noch keinen Plan, wie man den Teil für das Öffnen des Fensters oder eines Screens OS-unbhängig hinbekommt (z.B. nur mit SDL)!

Gibts ein paar gute Tipps, Kniffe oder Ähnliches, was ich hier beherzigen kann?

Oder was kann ich posten/beachten, um einfach mal etwas weiter zu kommen (z.B einen Screen/ein Fenster mit Inhalt zu Gesicht zu bekommen)?

Vielen Dank schon einmal!

Ciao

[ Dieser Beitrag wurde von Reth am 02.08.2009 um 01:32 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

02.08.2009, 08:18 Uhr

ZeroG
Posts: 1486
Nutzer
@Reth:
Zitat:
Dafür habe ich quasi überall die WIN32 Sektionen auskommentiert und mich auf die Linux-Bereiche konzentriert und alles was mit fmod zu tun hat komplett auskommentiert.
Das sehr fehlerträchtige auskommentieren der WIN32 Sektionen hättest du dir zu 99% sparen können, normalerweise macht das der Preprozesser, je nachdem ob auf dem System _WIN_32 definiert ist oder, nicht. Auf AmigaOS ist das üblicherweise nicht der Fall und der entsprechende Code wird automatisch entfernt bevor der Compiler ihn zu sehen bekommt.
Auch die fmod sachen packt man am besten in #ifdef / #endif Blöcke, auf die Art findet man die Stellen schön leicht wieder, falls man die nächste Version portieren will, oder die richtigen stellen braucht um z.B. eine andere möglichkeit der Audioausgabe einzubauen.

Zitat:
Dabei habe ich auch den Aufruf von SDL_main auskommentieren müssen, da diese Funktion vom GCC trotz Angabe aller Pfade und Header nicht gefunden wurde (ist aber in den SDL Headern vorhanden)!
Merkwürdig, in meinen SDL includes ist die Funktion SDL_main nicht zu finden. Ich hab nur die Zeile
code:
#define main SDL_main

gefunden.

Auf jeden fall kannst du das nicht einfach auskommentieren.

Zitat:
Fehlermeldung: SDL_main was not declared in this scope
Sieht so aus als währe es SDL_main definiert, liegt aber im falschen Scope (Gültigkeitsberich), bei c++ vielleicht auch im falschen namespace.

[ - Antworten - Zitieren - Direktlink - ]

09.08.2009, 00:25 Uhr

Reth
Posts: 1812
Nutzer
@ZeroG:

Also hab mal in nem neuen Ansatz das Ganze so versucht,

Der Source scheint aber in der Hinsicht nicht komplett sauber zu sein, denn z.B. solche Sachen wie:
C++ code:
RECT rect;
		SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);


stehen ohne irgendwelche #ifdefs drin.

Und Sachen wie SystemParametersInfo oder SPI_GETWORKAREA hab ich bisher nur im Zusammenhang mit Windows gefunden!

Bedeutet wohl, dass man solche Sektionen komplett neu schreiben muss!

Gibt es denn ein SDL-Porting-Guide für den Amiga (auch wenn genannte Funktionen erstmal nichts mit SDL zu tun haben scheinen)?

Ciao

[ - Antworten - Zitieren - Direktlink - ]

09.08.2009, 12:15 Uhr

Gazelle
Posts: 151
Nutzer
Zitat:
Gibt es denn ein SDL-Porting-Guide für den Amiga (auch wenn genannte Funktionen erstmal nichts mit SDL zu tun haben scheinen)?

Es gibt eine generelle Guide, vielleicht hilft die:

Porting Guide for Dummies

[ - Antworten - Zitieren - Direktlink - ]

09.08.2009, 14:39 Uhr

ZeroG
Posts: 1486
Nutzer
@Gazelle:
Wohl eher nicht, da gehts eher um sehr viel allgemeinere Dinge.

[ - Antworten - Zitieren - Direktlink - ]

09.08.2009, 23:35 Uhr

Reth
Posts: 1812
Nutzer
@ZeroG:

Korrekt, das Guide kannte ich schon.

Tendiere auch dazu, dass diese Funktionen Wine32-spezifisch sind und werde sie mal dementsprechend behandeln.

Muss mir dann was ausdenken, um diese Funktionalitäten zu ersetzen, denn da geht es gerade darum, das Fenster und den Screen zu erstellen (zumindest, was die Dimensionen anbelangt), wenn ich das richtig gecheckt habe.

Hier habe ich mir eigentlich keine Arbeit erwartet (sollte eben SDL machen können). Wurde wohl aber vom Programmierer leider so erstellt.

Ciao

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > SDL-Programm portieren [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2022 by amiga-news.de - alle Rechte vorbehalten.
.