Hallo,
ich möchte an dieser Stelle mal etwas über die Erfahrung mit Cross Development mit Oscar64 C berichten. Ich habe in den letzten Monaten an meinem Spiel 'Orbix' gearbeitet und vor ein paar Tagen veröffentlicht. Ich finde dieses Projekt leider etwas zu wenig gewürdigt, dabei sind damit einige tolle Spiele entstanden (Minotrace, Mineshift Gap, Portal Buster etc.).
Das SDK wurde von DrMortalWombat erstellt und beinhaltet einen C99 kompatiblen C Compiler/Linker mit einigen C++ Features wie Templates oder Lamdas. Auf die C++ Features habe ich aber in meinem Projekt allerdings verzichtet. Der Compiler hat einige Optimierungsmöglichkeiten, bis auf -O1 und -Os (size optimiert) haben diese aber in meinem Projekt nicht gut funktioniert. Aber auch mit der Standardoptimierung läuft es sehr performant.
Mein Spiel hat ca. 8500 Codezeilen und der eigentliche Code ist in Maschinencode ca. 64 Kb inkl Bss, Heap, Stack. Was ich intensiv genutzt habe sind Floating Point Arithmetik, dies ist eins der wenigen 6502 Programmiersprachen die dies können (bis auf Basic kenn ich da nichts). Dadurch konnte ich eine 2d Ballphysik schreiben und die Levels nach mathematischen Funktionen aufbauen (alles wird bei Levelstart errechnet!) Die mitgelieferte C Lib hat ist fast vollständig und auch die C64 Bibliotheken sind super. Ich habe intensiv die Bitmap Library genutzt zur Darstellung von Polygonen, Schriften etc. Interrupts werden unterstützt sowie Sprite Multiplexer (bis zu 16, mit Tricks 24 Sprites gleichzeitig). Ein Fastloader ist möglich, sowie Dekompression. Assembler Code für Performance kritische Elemente lassen sich einbinden.
Das mein Spiel immer umfangreicher wurde aber ich mich für Easyflash entschieden, auch hier ist du Unterstützung drin. Dies habe ich intensiv genutzt. Damit kann auch Funktionsaufrufe zwischen den Easyflash Banks machen, das Bankswitchen habe ich selbst implementiert. In der aktuellen Version kann man aber auf spezielle C++ Templates setzen die automatisches Bankswitching können, damit lässt sich C Code über alle 64 (?) Easyflash Bänke aufrufen. Vorausgesetzt der Heap Speicher läuft nicht über.
Der Support ist super, DMW antwortet i.d.R. innerhalb von ein paar Stunden. Es gibt auch einen externen Debugger den man benutzen kann, allerdings nicht für Easyflash Projekte. Die Symboldateien kann man aber in Vice einlesen und dort Werte auslesen. Für die Speichernutzung gibt es eine map Datei, indem detailliert der Speicherbedarf aufgelistet wird.
Bitte melde dich an, um diesen Link zu sehen.
Bitte melde dich an, um diesen Link zu sehen.
Andy