BASIC und Assembler mischen

Es gibt 36 Antworten in diesem Thema, welches 8.358 mal aufgerufen wurde. Der letzte Beitrag (12. Juli 2021 um 17:35) ist von BIF.

  • Bei einem Rollenspiel läuft es doch (auf dem C64) eher auf ein von "Raum" zu "Raum" gehen hinaus. Scrolling ist da eher wenig (also nix). Wobei es auch (wenige) andere Beispiele gibt (die mir vor dem Auge herumflattern aber wo mir der Name nicht einfällt). Das sind dann aber echte "Großprojekte". So ein von "Raum" zu "Raum" wollte ich mal für DSA umsetzen, das Wollen ist aber auch schon über 30 Jahre alt... :sad:

    Ach, so unmöglich ist das gar nicht. Das von mir bereits erwähnte Bitte melde dich an, um diesen Link zu sehen. ist in BASIC geschrieben und eher ein Ultima-Clone. Ein anderes Beispiel ist Bitte melde dich an, um diesen Link zu sehen., bediente sich offensichtlich auch am Runen-Zaubersystem von DSA Pro. Und als nächstes fällt mir noch Bitte melde dich an, um diesen Link zu sehen. ein. Da gibt es tatsächlich schon ein paar, die eine relativ große Oberwelt haben über die man sich per Scrolling bewegt.

  • @M. J. Danke für die ausführliche Beschreibung. DDD ist tatsächlich eine Inspiration für mich. Die Spieleprogrammierung ist mir nicht neu, auch wenn ich so ein großes Spielprojekt noch nicht umgesetzt habe. Es ist allerdings ein Herzensprojekt, an dessen Konzept ich schon länger feile.

    Ich bin mir aber nicht wirklich sicher, ob ich daraus wirklich ein C64-Projekt machen möchte. Meine Assembler-Kenntnisse sind okay-ish, aber ich glaube, mit etwas Übung (und Fragerei hier) würde ich das schon hinkriegen. Meine Eingangsfragen waren aber eher theoretischer Natur, da ich mich wirklich schon öfter gefragt habe, wie solche Spiele umgesetzt wurden.

    Ich werde die Idee aber wohl - auch nach den hilfreichen Antworten hier - eher auf dem PC umsetzen. Aussehen und funktionieren soll es aber trotzdem wie DDD oder Ultima 4, denn das ist das Grundkonzept, bei dem ich mir 100% sicher bin.

  • Für viele Spiele ist Basic ausreichend, wenn man die Tricks kennt.
    Die Frage wäre natürlich, für was genau du den Maschinencode brauchst.

    Schönen Gruß.

  • Für viele Spiele ist Basic ausreichend, wenn man die Tricks kennt.
    Die Frage wäre natürlich, für was genau du den Maschinencode brauchst.

    Schönen Gruß.

    Basic Tricks ?! 😂

    Arcade: Twinliner, Fashion Vision,
    "Cosmic Guerilla" cocktail table
    Pins: Scared Stiff + Getaway
    C64, C65, C66, Gammel+Mist...

  • Für viele Spiele ist Basic ausreichend, wenn man die Tricks kennt.
    Die Frage wäre natürlich, für was genau du den Maschinencode brauchst.

    Schönen Gruß.

    Basic Tricks ?! 😂

    Der geheime Trick von BASIC-Programmierern: auf Assembler zurückgreifen. :saint:

  • Ja z.B. durch Nutzung des ROM-Codes mit sys und usr.
    Oder durch ROM/RAM.
    Oder Nutzung von Kacheln bei der Spieleprogrammierung.
    Gute Basic-Tricks gibt es ne Menge.

    Schönen Gruß.

  • Meine Assembler-Kenntnisse sind okay-ish, aber ich glaube, mit etwas Übung (und Fragerei hier) würde ich das schon hinkriegen.

    :thumbsup: :emojiSmiley-123::emojiSmiley-122:

    Ich werde die Idee aber wohl - auch nach den hilfreichen Antworten hier - eher auf dem PC umsetzen.

    =O:cry::emojiSmiley-107:

    Als ich vor einiger Zeit mein vor 31 Jahren angefangenes Spielprojekt wieder aufgenommen hatte, kam auch ich ins Grübeln und war im Begriff, abtrünnig zu werden. Nach ausgiebiger Beobachtung der 8bit-Religionsgemeinschaft und der überschwemmten PC-Spiele-Welt kam ich zum Schluss, dass ein Wechsel Quatsch wäre und mir nichts bringt - anderen im Verhältnis zur User-Masse auch nicht.

    Tipp: Gerade wenn Du viele Algorithmen hast, versuche die nicht direkt in Asm umzusetzen, sondern erst in BASIC, egal wie lahm das dann ist (nötigenfalls Turbo einsetzen). Wenn das funktioniert, setze das BASIC in Asm um, und das ist dann dabei sogar der leichteste Teil. Macht immer wieder Spaß zu sehen, wie der Kram dann plötzlich 1000x schneller ist.

  • Wenn das funktioniert, setze das BASIC in Asm um, und das ist dann dabei sogar der leichteste Teil.

    naja, wenn du meinst.....

    Addieren und Subtrahieren ist ja noch einfach. Multiplikation und Division ist schon bisl schwieriger.

    Das ganze über mehrere Stellen (1000er, 100er, 10er, 1er) noch mehr.

    Bei Kurvenberechnung und ähnliches, bzw. Fließkommazahlen hörts - zumindest bei mir - auf.

    Arcade: Twinliner, Fashion Vision,
    "Cosmic Guerilla" cocktail table
    Pins: Scared Stiff + Getaway
    C64, C65, C66, Gammel+Mist...

  • Als ich vor einiger Zeit mein vor 31 Jahren angefangenes Spielprojekt wieder aufgenommen hatte, kam auch ich ins Grübeln und war im Begriff, abtrünnig zu werden. Nach ausgiebiger Beobachtung der 8bit-Religionsgemeinschaft und der überschwemmten PC-Spiele-Welt kam ich zum Schluss, dass ein Wechsel Quatsch wäre und mir nichts bringt - anderen im Verhältnis zur User-Masse auch nicht.

    Bei einem Wechsel versteh ich das. Aber hier geht es ja um eine Neuentwicklung. Natürlich wäre auch es auch möglich, das komplett auf dem C64 zu entwickeln. Ich hab mir gestern das Bitte melde dich an, um diesen Link zu sehen. angeschaut. Das hat sich viel Inspiration bei Ultima IV geholt, aber die Entwickler wollten ein Spiel mit den Features eines heutigen Spiels machen. So hat es ein Tutorial und alle Dialoge und Infos werden in Fenstern angezeigt. Das fand ich schon sehr spannend, denn so in etwa war von Anfang auch meine Intention: ein Oldschool-RPG mit heutigen Gamedesign-"Komfort"-Funktionen, im Stil eben von Ultima, DDD oder den Goldbox-Spielen. Am PC kann ich mich da anders austoben, es aber trotzdem so oldschoolig wie möglich aussehen und funktionieren lassen. Das würde bspw. auch bedeuten, dass ich (nach aktuellem Stand) auf eine reine Tastatur-Steuerung setze und auf Maus oder Gamepad verzichten möchte. Dem C64-Gedanken möchte ich aber nicht ganz abschwören. Ein Prequel oder Prolog könnte man gut in 8bit umsetzen.


    Ich hab mich im Rahmen meiner Recherche auch mal in Foren und auf Twitter umgehört. Interesse gibt es an solchen Spielen auf jeden Fall, die Zielgruppe oder User-Masse an sich ist nicht so gering.

    Btw: Nox Archaist kann man auch auf Steam kaufen, da wird es dann in einem Emulator ausgeführt.

  • Hallo @ll,

    ich habe mal vor Jahren mit einem ähnlichem Projekt begonnen:

    Bitte melde dich an, um diesen Link zu sehen.

    Soweit bin ich gekommen, danach war der Urlaub aus ... ;-).

    Grüße, Clyde.

  • Es gibt viele Grund-Prozesse, die das Basic grundsätzlich kann und mit sys aktiviert werden können, aber noch nicht auf die Basic-Ebene gehoben worden sind.
    z.B. schnelles Kopieren,schnelles Löschen/Füllen,Cursor setzen, Laden und Speichern.
    Außerdem kann man natürlich, wie im RAM-BASIC Programm gezeigt mit Pokes Fehler im Basic ausschalten und weitere Funktionen freischalten.

    Schönen Gruß.

  • Hier noch mal ein Basic-Code zum Thema Basic und Assembler mischen.

    Der MC-Code wird in den String in Zeile 51 geschrieben.
    Nach der Installation kann dann Zeile 52 gelöscht werden.

    50 :rem---mc-string-code set x,y

    51 :xy=-len(":12345678")+peek(113)+peek(114)*256

    52 :fori=0to7:reada:pokexy+i,a:next::data32,235,183,164,20,76,12,229

    53 :sys(xy)20,12:print"cursor-setzen"

    Und hier noch ein Beispiel für die MC-Code Generierung durch Stringaddition:

    20 :rem--sc$:cursor-setzen:

    21 :deffnsg(i)=fre(0)*0+peek(51)+peek(52)*256+i:rem--string-grenze

    22 :gs$=" ":ga$=chr$(76):ly$=chr$(164):

    25:sc$=gs$+chr$(235)+chr$(183)+ly$+chr$(20)+ga$+chr$(12)+chr$(229)::sc=fnsg(.)

    29 :sys(sc)10,3:print"hier"


    Schönen Gruß.

  • aber ich glaube, mit etwas Übung (und Fragerei hier) würde ich das schon hinkriegen.

    Denke ich auch.

    Ich werde die Idee aber wohl [...] eher auf dem PC umsetzen.

    Das ist natürlich auch eine Möglichkeit, sich erst einmal klar zu werden über den Aufbau des Programms sowie die zugrundeliegende Spielmechanik. Viele C64-Programmierer testen neue Spiele zuerst am PC aus und portieren dann die fertigen Algorithmen auf den C64. Sofern Dein Rollenspiel nicht zu komplex ist, kann man ja die Möglichkeit im Hinterkopf behalten, davon später einen C64-Port zu erstellen.

    Eine Empfehlung möchte ich in dieser Hinsicht noch geben: Da Du nun nicht C64-Basic als Programmiersprache nehmen wirst, wäre es wahrscheinlich sinnvoll, wenn Du so viel Funktionalität wie möglich in Scriptdateien, d. h. Textdateien mit einem beliebigen Format, festhälst. Im Idealfall besteht am Ende das eigentliche Spiel hauptsächlich aus diesen Textdateien (z. B. für die Unterhaltungen mit NPCs, aber auch die Landkarten), die von einem kleinen Scriptinterpreter während des Spiels ausgewertet werden. Dies hat mindestens zwei Vorteile: 1.) Es erleichtert eine Portierung auf andere Rechner wie z. B. C64 oder CPC, da neben einer handvoll Grafikroutinen zunächst nur der Scriptinterpreter neu geschrieben werden muß. Um Speicherplatz zu sparen, kann man sich immer noch zusätzlich überlegen, die Scriptdaten zu kompilieren, d. h. Kommandos in Tokenbefehle umzuwandeln wie bei Basic oder Daten zu packen. 2.) Es erleichtert aber auch die Entwicklung des Spiels selbst, denn bei der Verwendung von Scripts lassen sich diese im laufenden Programm direkt gegen neue Versionen austauschen, so daß man das Spiel quasi während des Spielens unmittelbar weiterschreiben kann, ohne neuen Code kompilieren oder neustarten zu müssen.

    Viel Spaß und Erfolg beim Entwickeln!

  • Denke ich auch.

    Das ist natürlich auch eine Möglichkeit, sich erst einmal klar zu werden über den Aufbau des Programms sowie die zugrundeliegende Spielmechanik. Viele C64-Programmierer testen neue Spiele zuerst am PC aus und portieren dann die fertigen Algorithmen auf den C64. Sofern Dein Rollenspiel nicht zu komplex ist, kann man ja die Möglichkeit im Hinterkopf behalten, davon später einen C64-Port zu erstellen.

    Genau das Downsizing vom PC auf den 64er ist dabei häufig das Problem.

    Also Spielkonzept auf dem PC testen ist sicher praktisch. Aber parallel dazu sollte man immer testen, was davon auf dem 64er überhaupt umsetzbar ist, so dass das Spiel noch funktioniert.

    Ich hatte ein ähnliches Problem gerade mit einer Spielidee für den PC. Da hatte ich auch das Konzept in DOSBOX begonnen. Aber das Spiel sollte eben auch auf einem 4,77 Mhz PC laufen. Und da ging dann leider gar nichts mehr.

  • Der Klassiker für Maschinencode ist natürlich die Ablage im Kassettenpuffer.

    Aber auch ROM/RAM ist natürlich für Maschinencode interessant.

    1. kann man nun alle Betriebssystembereiche modifizieren, bzw. Maschinencode einbringen.
    2. Wird der Bereich des Bildschirmspeichers ab 1024-2047 (1kb) durch die Bildschirmverlegung ins obere RAM frei.

    Ansonsten zeigt PostBitte melde dich an, um diesen Link zu sehen. natürlich, wie man Maschinencode auf Basis von Basic-Strings entwickeln und als Strings in den Basic-Quelltext integrieren kann.

    Schönen Gruß.