Hello, Guest the thread was viewed487 times and contains 17 replies

last post from oobdoo at the

Portable Basic-Spiele mit Source?

  • Hallo zusammen,

    für ein paar Experimente mit Basic (jenseits des C64) suche ich Source-Codes für nichttriviale, "portable" Basic-Spiele.

    Mir ist klar dass sich 100%ige Basic-Portabilität zwischen den verschiedenen Homecomputern im wesentlichen auf INPUT$,PRINT,IF und GOTO beschränkt ist, ich suche daher "lediglich" nach Programmen die sich zumindest mit vernünftigem Aufwand anpassen lassen.


    Inhaltlich:

    -Es sollte schon eine gewisse Komplexität enthalten sein (in Richtung StarTrek, Schach, Kaiser, Mule .... NICHT "Halte das * zwischen den #" oder "Pong" wie man es gerne in Abtipp-Büchern findet)

    -Sollte auch heute noch Spaß machen

    -Grafik wäre gut

    -Sound wäre gut

    -Schön wären Spiele die skalieren. TicTacToe profitiert kaum von besserer Grafik,Speicher,CPU Speed. Ein Strategiespiel könnte damit größere Karten und mehr/bessere Gegner anbieten.


    Technisch:

    -Kein eingebetteter Maschinencode (außer vielleicht es wurde ganz klar abgegrenzt z.B. eine DrawLine Subroutine damit implementiert die man dann durch die eingebaute Line-Funktion eines anderen Basics ersetzen kann)

    -Keine Petscii oder ähnliche systemspezifische Sonderzeichen (eigenes Custom Charset ist in Ordnung)

    -Keine/wenige Steuercodes ("Hallo<Rote Schrift>WELT")

    -Keine oder nur wenige, nachvollziehbare Pokes (z.B. Cursorpositionierung)

    -Wenig hardwarespezfische Besonderheiten (Softscrolling, Speicherbereiche umkopieren, ROM abschalten, REL-Files, REU, ...)

    -Nicht maximal auf speichersparend getrimmt, sondern strukturiert und lesbar


    Damit fallen natürlich schon mal 99% der Basic-Programme für den C64 raus :D Aber von Platformen mit mächtigerem Basic (C128, Amstrad, Amiga/Atari ) her sollte das doch möglich sein.


    Hat jemand Ideen? Gibts da was?

    danke,

    Andy

  • irgendwie scheint mir das fast unmöglich, insbesondere die Kombination aus komplex und gleichzeitig kein PETSCII, keine Grafik, kein Pokes, keine Steuercodes... puh


    Kannst Dir ja mal Evil Dungeon (nur Teil 1!) anschauen und gucken ob sich das umbauen lässt. Da ist noch keine Assembler Soundroutine drin und die Grafikzeichen, etwas PETSCII könnte man auch anpassen mit Alternativen.


    Bei Fragen zum code stehe ich gern bereit.

  • Wieso eigentliche die Einschränkung bezüglich Steuerzeichen? Spätestens wenn man PRINT durch eine eigene Unterroutine ersetzt, sollten die doch kein Problem sein (wobei das Umsetzen natürlich ggf. wegen der unüblichen Parametersyntax bei PRINT - siehe PRINTA$;B$; - nicht ganz trivial ist, aber so wild dann auch wieder nicht).

  • BASICODE ist mir bekannt, was ich davon an Programmen gesehen habe war aber leider (Auch mangels Grafik-Erweiterung) relativ trivial und hässlich (Zahlenraten etc).

    Einzelne Steuerzeichen wären grundsätzlich natürlich konvertierbar, aber Zeilen wie

    20 PRINT"{SHIFT-M}{4CBM-P}{SHIFT-N}{6LEFT}{DOWN} {CBM-H}{2SHIFT-W}{CBM-M} {6LEFT}{DOWN}{SHIFT-N}{CBM-H}{2CBM-I}{CBM-M}{SHIFT-M}{7LEFT}{DOWN}{SHIFT-V} {SHIFT-L}{2CBM-P}{SHIFT-@} {SHIFT-V}{6LEFT}{DOWN} {CBM-K}{RVSON}{CBM-K}{RVSOFF} {4LEFT}{DOWN}";

    sind halt wirklich sehr, sehr eklig manuell auf etwas anderes als einen C64 zu übertragen.

  • Das "Tenliner Cave Adventure" in 10 Zeilen für den ZX81 fällt mir ein (der Code ist in dem Link dabei).


    Weiterhin das klassische Buch "Viel mehr als 33 Programme für den Sinclair ZX Spectrum", von dem möglicherweise ein pdf existieren könnte, sagt man. Enthält aber eher kleinere Programme. Die aber wahrscheinlich portierbar wären.


    Edit: Das heißt ... Sobald es auf dem Spectrum mit "PRINT AT ..." losgeht, ist es mit der Portabilität auf Commodore-Geräte natürlich vorbei. Ich weiß nicht, hab' schon ewig nicht mehr in das Buch reingeschaut, lol.

  • Das "Tenliner Cave Adventure" in 10 Zeilen für den ZX81 fällt mir ein (der Code ist in dem Link dabei).


    Weiterhin das klassische Buch "Viel mehr als 33 Programme für den Sinclair ZX Spectrum", von dem möglicherweise ein pdf existieren könnte, sagt man. Enthält aber eher kleinere Programme. Die aber wahrscheinlich portierbar wären.

    Danke, aber:

    "-Es sollte schon eine gewisse Komplexität enthalten sein (in Richtung StarTrek, Schach, Kaiser, Mule .... NICHT "Halte das * zwischen den #" oder "Pong" wie man es gerne in Abtipp-Büchern findet)"


    Ein 10-Zeiler dürfte da im allgemeinen nicht hinreichend sein :-)

  • Der ist aber leider geil. :) Guck' es Dir ruhig mal an.

    Ich hatte es ja nach Python, C und Spectrum Basic "portiert" - wobei es dann wieder größer wurde als 10 Zeilen; ich wollte, daß es gut lesbar wird, und man eine Chance hat, zu verstehen, was da vor sich geht.


    Tja, das Buch, das ich genannt hatte, war wohl so ein "Abtipp-Buch".


    Aber: Schach ist ja schon in Maschinensprache z.B. auf dem Spectrum ("The Chess Player" - mit Sprachausgabe) ziemlich langsam. Wenn man nicht ein modernes Basic wie "Blitz Basic" auf dem PC einsetzt, dürfte das so langsam sein, daß es keinen Sinn macht.

  • Aber von Platformen mit mächtigerem Basic (C128, Amstrad, Amiga/Atari ) her sollte das doch möglich sein.

    Ich würde sagen, dass das mit genau diesen Platformen nicht mehr möglich ist, weil die Basic Dialekte hier nicht mehr auf Commodore-Basic beschränkt sind.


    An den Commodores hast du immer Zeilennummern. In den moderneren Dialekten fallen genau die weg.

    Und ein QuickBasic unter DOS hat zB auch SUBs und FUNCTIONs, etc.


    Sinnvoll einzugrenzen wär das meiner Meinung nach auf Basic 4, Basic 7 und wahrscheinlich Mega65.

    Ich hab da ja mein schlafengelegtes WiSim Projekt, was zwischen Basic 7, Basic 2, Basic x16 und Basic65 kompatibel sein soll.
    Was funktioniert, sind die mathematischen Sachen und Arrays und Datentypen generell. Auch Tastencodes für Eingaben sind natürlich gleich.


    Aber schon bei der Textausgabe irgendwo am Bildschirm, also alles was über PRINT hinausgeht, wirds schwierig.

  • Aber von Platformen mit mächtigerem Basic (C128, Amstrad, Amiga/Atari ) her sollte das doch möglich sein.

    Ich würde sagen, dass das mit genau diesen Platformen nicht mehr möglich ist, weil die Basic Dialekte hier nicht mehr auf Commodore-Basic beschränkt sind.


    An den Commodores hast du immer Zeilennummern. In den moderneren Dialekten fallen genau die weg.

    Und ein QuickBasic unter DOS hat zB auch SUBs und FUNCTIONs, etc.

    Das sehe ich als kein Hindernis, eher im Gegenteil. Vielleicht habe ich mich da unklar ausgedrückt, ich plane nicht so ein Spiel so umzuschreiben dass es anschließend auf Basic V2 läuft.

    Mein Ziel wären da eher "größere" Plattformen, Amiga GFA Basic, Atari Omicron Basic, DOS GWBasic, etc. Und dann mal schauen wie weit man es "aufbohren" kann wenn man da mehr Leistung zur Verfügung hat.

    Und da ist ein "putimage a$,100,100" einfacher zu übertragen als ein DATA-Block der das auf dem C64 in Maschinensprache erledigt oder Zugriffe auf POKE ebene.

  • Das sehe ich als kein Hindernis, eher im Gegenteil. Vielleicht habe ich mich da unklar ausgedrückt, ich plane nicht so ein Spiel so umzuschreiben dass es anschließend auf Basic V2 läuft.

    Mein Ziel wären da eher "größere" Plattformen, Amiga GFA Basic, Atari Omicron Basic, DOS GWBasic, etc. Und dann mal schauen wie weit man es "aufbohren" kann wenn man da mehr Leistung zur Verfügung hat.

    Und da ist ein "putimage a$,100,100" einfacher zu übertragen als ein DATA-Block der das auf dem C64 in Maschinensprache erledigt oder Zugriffe auf POKE ebene.

    Achsoooo.


    Du würdest gern ein "primitives" Basic Spiel auf eine neuere Platform wie zB Amiga, Atari oder DOS portieren, die Spiellogik soweit wie möglich übernehmen und nur Grafik und Sound etwas auf Vordermann bringen.

    Und du hättest hier gern vorschläge, welches Spiel sich denn dafür mit möglichst wenig Übersetzungsaufwand eignet.

    Richtig?


    Oel von berni ist genau sowas.

    Und ich denke, alle deutschen WiSims aus der damaligen Zeit.

    Fugger, Hanse, Vermeer, Kaiser

    Außerdem noch Mafia oder Trucking USA.


    Weitere Inspiration vielleicht auch hier:

    Spiele und Anwendungen mit "offenen" Programmcode

  • Einzelne Steuerzeichen wären grundsätzlich natürlich konvertierbar, aber Zeilen wie

    20 PRINT"{SHIFT-M}{4CBM-P}{SHIFT-N}{6LEFT}{DOWN} {CBM-H}{2SHIFT-W}{CBM-M} {6LEFT}{DOWN}{SHIFT-N}{CBM-H}{2CBM-I}{CBM-M}{SHIFT-M}{7LEFT}{DOWN}{SHIFT-V} {SHIFT-L}{2CBM-P}{SHIFT-@} {SHIFT-V}{6LEFT}{DOWN} {CBM-K}{RVSON}{CBM-K}{RVSOFF} {4LEFT}{DOWN}";

    sind halt wirklich sehr, sehr eklig manuell auf etwas anderes als einen C64 zu übertragen.

    Muss man ja nicht manuell machen, man kann z.B. den PRG-Dump-Code von Crank the PRINT anpassen: https://github.com/c1570/Crank…ba4e7e4/cranktheprint#L66


    Das Skript macht viel mehr als man dafür braucht, einfach den Teil um crank_the_print() ignorieren. Beim Starten gibt es das PRG als ASCII aus in der normalen Version (ähnlich wie es petcat macht).


    Ich hab davon auch schonmal eine andere Version gebastelt, die aus (annotiertem) BASIC V2 JavaScript machen kann: https://github.com/c1570/Rebli…master/docs/basictransplr (da aber ohne besonderes PRINT-Handling)


    Das ist dann auch so schnell wie man es erwartet: Statt z.B. mehreren Minuten auf dem C64 nur noch Zehntelsekunden auf dem PC. ;)

  • Das sehe ich als kein Hindernis, eher im Gegenteil. Vielleicht habe ich mich da unklar ausgedrückt, ich plane nicht so ein Spiel so umzuschreiben dass es anschließend auf Basic V2 läuft.

    Mein Ziel wären da eher "größere" Plattformen, Amiga GFA Basic, Atari Omicron Basic, DOS GWBasic, etc. Und dann mal schauen wie weit man es "aufbohren" kann wenn man da mehr Leistung zur Verfügung hat.

    Also, wenn Du 2D-Spiele nach Art der Klassiker in einer verhältnismäßig einfachen Sprache auf dem PC schreiben wolltest, dann würde ich mir mal Pygame anschauen. Das ist eine Bibliothek für Python, das nicht viel schwerer zu programmieren ist als Basic. Damit erreicht man durchaus die Geschwindigkeit von C64-Maschinenspracheprogrammen - aber eben in einer einfacheren Sprache.

    Mich wundert immer, daß nicht mehr Leute diesen Weg einschlagen, sondern sich immer noch mit Basic (und dessen Schwächen) oder Assembler abquälen.

  • sondern sich immer noch mit Basic (und dessen Schwächen) oder Assembler abquälen.

    Sehr schönes Zitat von der letzten Folge der Brotkastenfreunde:
    Basic ist keine schlechte Sprache. Es ist nur schlecht wenn man damit Geld verdienen will.


    Und von wem anderen:

    Die Abwesenheit von Restriktionen ist der Tod jeder Kunst


    und Zitat von mir:
    Ich find Basic Klasse. Es macht mir Spaß, Ideen mit beschränkten Mitteln umzusetzen. Die Limitierungen der Sprache muss ich als Programmierer kompensieren können. Und das kann nicht jeder


    :-)

  • Mich wundert immer, daß nicht mehr Leute diesen Weg einschlagen, sondern sich immer noch mit Basic (und dessen Schwächen) oder Assembler abquälen

    Also ich programmiere nicht deshalb in BASIC und/oder Assembler auf dem C64, C128 oder MEGA65, weil ich nichts anderes kenne und kann, sondern das mache ich genau deshalb, weil ich etwas in BASIC und/oder Assembler auf dem C64, C128 oder MEGA65 machen will. ;)

  • Damit fallen natürlich schon mal 99% der Basic-Programme für den C64 raus :D Aber von Platformen mit mächtigerem Basic (C128, Amstrad, Amiga/Atari ) her sollte das doch möglich sein.


    Hat jemand Ideen? Gibts da was?

    Ganz klar Frutty Man. :prof:


    Portierung von LocoBasic zu Basic V7.0 am Beispiel Frutty Man