Schnelle Spritebewegung mit Print

Es gibt 23 Antworten in diesem Thema, welches 3.626 mal aufgerufen wurde. Der letzte Beitrag (5. November 2021 um 01:10) ist von JeeK.

  • Hallo Leute,

    wollte euch mal ein kleines Basicprogramm von mir vorstellen.

    Mit dem Print-Befehl kann man Speicherzellen belegen. Das

    geht schneller, als mit Poke. Ich habe mich gefragt, ob man

    auf diesem Wege auch eine schnelle Spritebewegung hinbekommt.

    Und hier das Ergebnis:

    Es funktioniert, bedarf aber einiger Vorbereitung. Zum Beenden

    eine Taste drücken und kurz warten.


    Gruß,

    Neptun

  • Gruselcode ... Wäre meiner meiner nach werniger Aufwand, Assembler zu lernen, als diesen Code da oben durchzuarbeiten und zu verstehen.

  • Das ist auch immer mein Gedanke wenn das Argument kommt, dass ja sogar Pirates 'in BASIC geschrieben' sei und BASIC daher ja ideal fuer anspruchsvolle Dinge waere.

    Man moege sich den Quelltext von den BASIC parts in Pirates mal ansehen :)

    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.

  • Und hier das Ergebnis:

    Ich finde es in programmiertechnischer Hinsicht toll gelungen und als Demo, was man mit BASIC 2 hinbekommen kann, wirklich beeindruckend! :thumbup:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Gleichzeitig scheue ich mich davor, das als gutes Beispiel für "Programmieren in BASIC" zu bezeichnen. :D

  • Ich persönlich finde Basic um einiges einfacher (und verständlicher) als ASM ... Ich hab's ein paar mal versucht, bin aber kläglich gescheitert :D

    Ich tu mir das in meinem Alter auch nicht mehr an und freue mich schon auf das Basic10 vom Mega65 :thumbsup:

    Und danke an Neptun für den Code, das kann man bestimmt sinnvoll einsetzen :)

    "Werter Pöbel, wertes Gesocks ... aus dem Arsche zieht euch den Stock ..."

  • Immer das Alter als Entschuldigung hernehmen... :alt:

    Ich schätze das man in der Wartezeit am Beginn von dem Basic Programm soviel Assembler lernen kann wie man nötig hat um so ein Sprite Demo zu programmieren... :P

    Vor allem wenn man ja schon die Sprite Register vom VIC-II beherrscht.

  • mrsid

    Das war keine Entschuldigung sondern eine Entscheidung ... Will ich nicht ! Punkt . ;)

    Ich war immer fasziniert von der Möglichkeit einen Rechner direkt nach dem Einschalten programmieren zu können ohne noch Hilfsmittel wie einen Assembler zu benutzen ... Aber jeder wie er mag, gelle ^^ ?

    "Werter Pöbel, wertes Gesocks ... aus dem Arsche zieht euch den Stock ..."

  • 80 u=1:s=.:a=.:b=n-1:e=v+18:f=128:tp=198:w=1:poke648,v/256:poketp,.
    90 forj=.to5:k=sgn(b-a)*(s+1)

    mal eine Frage von jemandem, der seit 30 Jahren kein Basic mehr programmiert hat.

    Welchen Wert hat der Punkt, der so oft als Variable verwendet wird?

    Den Trick kenne ich gar nicht oder habe ihn vergessen.

    Meine VC20 Projekte:

    🕹 Bitte melde dich an, um diesen Link zu sehen. 🕹 Bitte melde dich an, um diesen Link zu sehen. 🕹 Bitte melde dich an, um diesen Link zu sehen. 🕹 Bitte melde dich an, um diesen Link zu sehen.

  • Der Punkt ist einfach "0". Man nimmt das zum optimieren weil der Basic-Interpreter den Punkt wesentlich schneller parst als die Ziffer.
    Siehe Bitte melde dich an, um diesen Link zu sehen. :)

  • Puh, ich kenne mich ja auch etwas in Basic aus, aber das ist noch mal eine ganz andere Liga. Den Code verstehe ich echt nicht.

    Das liest sich für mich auch fast komplizierter als Assembler.

    Das Ergebnis ist aber toll :)

    lass uns im Bitte melde dich an, um diesen Link zu sehen. treffen

  • 80 u=1:s=.:a=.:b=n-1:e=v+18:f=128:tp=198:w=1:poke648,v/256:poketp,.
    90 forj=.to5:k=sgn(b-a)*(s+1)

    mal eine Frage von jemandem, der seit 30 Jahren kein Basic mehr programmiert hat.

    Welchen Wert hat der Punkt, der so oft als Variable verwendet wird?

    Den Trick kenne ich gar nicht oder habe ihn vergessen.

    Das ist Kurzform für 0.0, also 0. Warum man das macht...? Gerade kurz gegoogled: Es ist eine Besonderheit des Commodore BASIC Interpreters, dass "." schneller zu parsen ist als "0". Die Zahlen müssen ja von der String-Repräsentation ("0") in eine Zahl (Integer oder Gleitkomma) umgewandelt werden. Und scheinbar geht das mit "." besonders schnell...

    C64C mit 8580, C64 mit 6581 und C64G mit ARMSID,

    C16, VC20, PET3016+32K, 3x1541, 2x1541-II, Pi1541, Philips CM8833-II, 1084S

    Bitte melde dich an, um diesen Link zu sehen.

  • Noob-Frage: Wie kriege ich jetzt dieses Listing in meinen VICE oder auch echten C64?

    C64-Studio meldet immer nur "unsupported character ... encountered" (ungefähr drölfhundert Mal)

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • Noob-Frage: Wie kriege ich jetzt dieses Listing in meinen VICE oder auch echten C64?

    Den Text oben komplett markieren und in VICE mit "Paste" einfügen lassen.

    Ich habe mir mal erlaubt, das Listing in ein D64-Image abzuspeichern und hier anzuhängen. :)

  • Noob-Frage: Wie kriege ich jetzt dieses Listing in meinen VICE oder auch echten C64?

    C64-Studio meldet immer nur "unsupported character ... encountered" (ungefähr drölfhundert Mal)

    Da habe ich auch zuerst rumprobieren müssen.

    Lösung war aber ganz einfach: einfügen und dann den Knopf "Toggle upper/lower case" klicken, der ist in der gleichen Reihe wie "Label Mode"