Hello, Guest the thread was viewed16k times and contains 356 replies

last post from Snoopy at the

S-BASIC 65 (MEGA65)

  • Hi Endurion,

    daran habe ich auch schon gedacht. Habe ich aber wieder verworfen. Da bräuchte ich dann eine genaue Berechnung für die Spriteposition,

    damit der Sprite immer an die gleich Stelle springt vom Zeichen.


    Hi MC64,

    leiter besitzt die Basicerweiterung von Snoopy keine Spritepointer, deswegen ja meine Frage.


    Hi Snoopy,

    das habe ich ja gewusst, aber dann ist dein System mit " FCSPRDEF <Sprite>, <Frame>, <Zeile>, "<String>" ", mit verlaub,

    eine ganz schöne Platzverschwendung.

    Es bräuchte ein Befehl wo ich sagen kann Sprite 1,2,3 usw., Frame vom Sprite 1,2,3 usw., x-pos, y-ypos.

    OK, dann muss ich schauen wie ich das mit Gegner geregelt bekomme, und da gibt es schon ein paar.

  • leiter besitzt die Basicerweiterung von Snoopy keine Spritepointer, deswegen ja meine Frage.

    Das könntest du über Pokes machen. Im Handbuch steht folgendes:

    Code
    1. SPR = PEEK ( 5 3 3 5 6 ) + PEEK ( 5 3 3 5 7 ) * 2 5 6

    Das gilt für Sprite 0. SPR+1 wäre dann Sprite 1 usw.

  • Hi Snoopy,

    das habe ich ja gewusst, aber dann ist dein System mit " FCSPRDEF <Sprite>, <Frame>, <Zeile>, "<String>" ", mit verlaub,

    eine ganz schöne Platzverschwendung.

    Es bräuchte ein Befehl wo ich sagen kann Sprite 1,2,3 usw., Frame vom Sprite 1,2,3 usw., x-pos, y-ypos.

    Kurze Nachfrage: Ich verstehe leider nicht, was du damit meinst.


    Du kannst ein Sprite definieren und das dann ein anderes Sprite kopieren. Ich halte das für recht bequem, wenn man nicht alles mit FCSPRDEF definieren will.

  • leiter besitzt die Basicerweiterung von Snoopy keine Spritepointer, deswegen ja meine Frage.

    Das könntest du über Pokes machen. Im Handbuch steht folgendes:

    Code
    1. SPR = PEEK ( 5 3 3 5 6 ) + PEEK ( 5 3 3 5 7 ) * 2 5 6

    Das gilt für Sprite 0. SPR+1 wäre dann Sprite 1 usw.

    Ähm, dir ist bewusst das ich die Basicerweiterung "S-Basic" von Snoopy verwendet.

    Ich glaube Snoopy hat das bei sich anders geregelt.


    Ja Snoopy ist mir bewusst was du meinst, das wollte ich ja umgehen, warum was kopieren wenn das schon im Speicher steht.

    Was ichn meinte mit meinen Beispiel Befehl

    Parameter 1: Sprite <1 - 7>

    Parameter 2: Sprite <an - aus>

    Parameter 3: Spritedaten aus <Sprite 1 - 7 (Frame 1-16)>

    Parameter 4: X-Pos

    Parameter 5: Y-Pos

    Mit dem Parameter 3 wollte ich nur das lästige kopieren umgehen. ^^

  • Das sind Register des VIC4. Ich glaube nicht das man die verändern kann. Versuch macht kluch.

    Vielleicht irre ich mich auch und man kann die Register im Speicher verschieben. Soweit ich weiss sind die aber an fester Stelle.

  • Das sind Register des VIC4. Ich glaube nicht das man die verändern kann. Versuch macht kluch.

    Vielleicht irre ich mich auch und man kann die Register im Speicher verschieben. Soweit ich weiss sind die aber an fester Stelle.

    OK,

    Danke für den Tipp.

    Aber ich weis nicht ob das klappen wird, da ich ja die Basicerweiterung von Snoopy verwende.

    Und Snoopy hat ja seine eigene Routine für die Sprites geschrieben.

    Vielleicht kann er dazu was sagen, ob das klappen könnte.


  • Ich melde mich 2087 wieder! :whistling:

    Ist jetzt doch etwas früher geworden. :D


    Ich habe es endlich geschafft, die Fehlerquelle einzukreisen. :smoke:


    Also, ein ganz einfaches Programm, das eine Prozedur mit dem Wert 3 aufruft und dort diesen Wert ausgibt.



    Passt alles!


    Auch so geht alles gut:


    In Zeile 10 wird eine reele Variable zugewiesen.


    In Zeile 10 wird eine reele Variable eines Arrays zugewiesen.


    In Zeile 10 wird ein String zugewiesen.


    Alles so, wie es sein soll!


    Nur wenn in Zeile 10 ein String eines Arrays zugewiesen wird, dann spinnt S-BASIC 65! :aerger:



    Dann schau ich mal, was der Entwickler hier wieder verkackt hat! Alles muss man selber kontrollieren! :whistling:

  • Hallo Snoopy,


    gut das du auf Fehlersuche gehst. Ich könnte dir ein paar Fischstäbchen mit Kartoffelsalt zu kommen lassen.

    Dann geht vielleicht die Suche besser vorran. Denn du hast die Power der Fischstäbchen dann inne. :applaus:


    Ach ja, habe jetzt meinen Mega65 an meinen Monitor angeschlossen bekommen. Weis zwar nicht warum das beim ersten mal nicht geklappt hat, aber jetzt funktioniert es.

    So jetzt noch ein paar SD-Karten vorbereiten zum spielen und natürlich weiter programmiern an Jumpman Klon. :D

  • Hi Snoopy,


    habe etwas schlechte Nachrichten für dich.

    Ich wollte sehen ob mein kleines Game Jumpman Klon auf der echten Hardware von Mega65 läuft.

    Ich würde sagen Janein.

    Siehe Bild


    Der Sprite wird korrekt dargestellt, während die Chargrafik etwas seltsam dar kommt.

    Nun es kann sein, das es eventuell am Rom liegt.

    Ich habe bei mir auf den ersten Slot den "mega65r6-20240224.00" Core installiert.

    Und beim Einschalten wird ist die Version .....395 Rom Version angezeigt .

    Werde vorerst mal auf den Emu weiter programmieren.

    Dann noch eine Frage

    Wenn du dein S-Basic alle Kinderkrankheite ausgemerzt hast, wirst du dann daraus ein Core bastelen.

    Wäre doch nett beim Einschalten des Mega65 gleich auf S-Basic zu starten. :D

  • Ich bin zwar nicht Snoopy aber antworte trotzdem mal :D


    Das ROM wird UNABHÄNGIG vom verwendeten Core genutzt, soll heissen wenn du das S-BASIC65 Rom auf die SD kopierst und in MEGA65.ROM umbenennst, wird der Mega65 immer mit dem aktuellen Core UND dem S-BASIC Rom starten ...


    Du kannst aber auch (um das original Rom zu erhalten) dem Rom File eine Zahl hinzufügen, also z.B. MEGA651.ROM und wenn du dann nach einem Reset die Taste "1" festhältst wird auch genau dieses Rom geladen und genutzt :)

  • Habe ich getestet und für sehr GUT befunden. :thumbsup:


    Wäre doch nett beim Einschalten des Mega65 gleich auf S-Basic zu starten. :D

    Das tut es auch. S-BASIC 65 ist ein ROM! ;)


    Das musst du anstelle eines MEGA65-ROMs installieren.

    Und was ist mit dem Grafikfehler, hast du dazu keine Meinung. Ich bezahle auch mit Fischstäbchen. ^^

  • Und was ist mit dem Grafikfehler, hast du dazu keine Meinung. Ich bezahle auch mit Fischstäbchen. ^^

    Problem Nummer 1: Ich habe keinen MEGA65, um Probleme damit nachstellen zu können. Die niemals zugesagte Spende eines Geräts ist noch nicht bei mir angekommen. :whistling:


    Ich habe ein Nexys-Board hier und mit dem klappt S-BASIC 65 so wie es soll.


    Ich vermute, dass es eventuell Probleme mit einem neueren Core geben könnte. Welche Version vom Core verwendest du denn genau?

  • Ich habe diesen Core verwendet - "mega65r6-20240224.00-r-0.96-3c10488.cor" ^^


    Vielleicht soll ich diesen Core wieder löschen, und dann das ROM verwenden was ich beim Emu benutze.

    Da habe ich die Rom-Version 920377 und damit funktioniert dein S-Basic ohne Probleme.

  • Ich habe diesen Core verwendet - "mega65r6-20240224.00-r-0.96-3c10488.cor" ^^


    Vielleicht soll ich diesen Core wieder löschen, und dann das ROM verwenden was ich beim Emu benutze.

    Da habe ich die Rom-Version 920377 und damit funktioniert dein S-Basic ohne Probleme.

    Nein, das 920377er ROM wird automatisch gegen das S-BASIC65 ROM getauscht, das hat mit dem Core nix zu tun :prof:

  • Drachen , wie SkulleateR schon geschrieben hat, verwechselst/vermischt du hier "Core" und "ROM".


    "Core" ist quasi die Hardware des MEGA65. Ein FPGA-Programm, das die "Schaltung" ist. Also quasi das, was beim C64 alles an Elektronik (Prozessor, RAM, Kondensatoren, ...) drinsteckt.


    "ROM" ist die Software des MEGA65. Das was beim C64 in den "ROM-ICs" drinsteckt.


    Für S-BASIC 65 benötigst du einen "Core", damit der MEGA65 überhaupt weiß, dass er ein MEGA65 ist.

    Und dann das S-BASIC 65-ROM. Da steckt dann das S-BASIC drin.


    Die MEGA65-ROMs spielen für S-BASIC keine Rolle, die benötigst du hierfür gar nicht.

  • Ja wenn das Rom damit nichts zu tun hat, warum funktioniert das dann nicht? :gruebel