Hallo Besucher, der Thread wurde 12k mal aufgerufen und enthält 91 Antworten

letzter Beitrag von Hexworx am

Brauche einen kleinen Crashkurs mit viel Unterstützung

  • Hallo liebe forum64 Gemeinde,


    ich habe eine etwas ungewöhliche Bitte. Privat lief bei mir in den letzten Monaten etwas sehr schief. Möchte aber ungern hier offen darauf eingehen. Wer will schreibt mir eine PN.
    Um das alles abzuarbeiten und loslassen zu können, will ich alle Pläne/Vorhaben aus den letzten Jahren umsetzen.


    Eins davon ist auf dem C64 eine kleine Animation mit etwas Pieptönen in Assembler zu programmieren. Folgendes soll umgesetzt werden:


    3 Luftballons (Sprites?) sollen von unten nach oben scrollen. Alle 3 leicht versetzt. Dazu kommt noch ein Text und nach Möglichkeiten ein kleiner Pfeil rechts unten der anzeigt dass noch etwas kommt.
    Dann soll das Scrolling stoppen (wenn der 2 Luftballon oben fast raus ist). Das Bild bleibt stehen und die Pieptöne laufen weiter. Genial wäre es noch, wenn die Animation (?) nach 60 Sekunden wieder von vorn beginnen würde.
    Ich habe auch 3 Bilder angehängt die den Ablauf verdeutlichen sollen.



    Nur mein Problem: Ich kann (noch) kein Assembler. Im Studium habe ich zwar C, C++, JAVA, Perl, etc. gehabt, aber seit dem habe ich nichts damit gemacht.


    Kann mir bitte jemand helfen? Ich bräuchte eine kurze aber detaillierte Anleitung wie ich wo was machen soll. Gerne auch fertige Codeschnipsel bzw. Code. (Dann kann ich mich einarbeiten und verstehen wo was gemacht wird, das zählt auch)
    Diese Animation sitzt mir schon seit ca. 3 Jahren im Nacken. Ich muss es endlich umsetzen, das macht mich noch verrückt. Deswegen auch die Suche nach Unterstützung statt erstmal Assembler zu lernen.


    Das Programm soll dann auch auf einem originalen C64 laufen. Und auf einem Emulator. Einen USB2IEC (MK-II) Adapter habe ich bereits. Programmieren kann ich aber auch gern am Emulator. Ist wohl deutlich angenehmer, richtig?


    Hat jemand Lust und Zeit mir zu helfen? Gerne auch für Gegenleistungen.



    Viele Grüße
    the_dark_knight

  • Ich bräuchte eine kurze aber detaillierte Anleitung wie ich wo was machen soll.

    • Crossdevelopment-Tool besorgen
    • beliebigen 6502-Assemblerkurs durcharbeiten
    • Ballon-Beispiel aus dem C64-Handbuch durcharbeiten (wegen Sprites)
    • Aufgabe lösen

    Gerne auch fertige Codeschnipsel bzw. Code.

    Gibt es auf Codebase bzw. in den diversen Assemblerkursen.

    Deswegen auch die Suche nach Unterstützung statt erstmal Assembler zu lernen.

    Die skizzierte Aufgabe ist von der Komplexität her ideal für C64-Assembleranfänger. Worum geht es Dir genau? Eine Lösung "abgeben zu können", auch wenn den Code jemand anderes schreibt? Oder willst Du wirklich soweit 6502-Assembler lernen, dass Du die Aufgabe selbständig lösen kannst?

    • "Crossdevelopment-Tool besorgen" -> ok, welches? Hab da leider keine Ahnung
    • "beliebigen 6502-Assemblerkurs durcharbeiten" -> eben hier fehlt grad die Kraft
    • "Ballon-Beispiel aus dem C64-Handbuch durcharbeiten (wegen Sprites)" -> Super Idee. Ich suche heute Abend gleich mal das Handbuch daheim!


    "Die skizzierte Aufgabe ist von der Komplexität her ideal für C64-Assembleranfänger. Worum geht es Dir genau? Eine Lösung "abgeben zu können", auch wenn den Code jemand anderes schreibt? Oder willst Du wirklich soweit 6502-Assembler lernen, dass Du die Aufgabe selbständig lösen kannst?"


    Naja, etwas dazwischen würde mich glücklich machen. Z.B. "so und so erstellst du den Sprite" , "so geht eine Animation" , ... und ich arbeite dann mit diesen Schnipseln und füge es zu einem Ganzen zusammen. Wichtig ist halt in erster Linie dass ich nachvollziehen kann was ich da mache. Aber primär geht es um "abgeben zu können". Aber einfach einen komplett fertigen Code, der schon alles macht, irgendwo reinkopieren will ich auch nicht. Es sollte was dazwischen sein. Alles sich selbst beizubringen geht momentan einfach nicht.

  • Zitat

    Ich sehe schon: Ich muß an meinem Humor arbeiten.

    Mag' meistens wohl sein, aber das YT-Video war mal echt klasse :lol27::applaus: . Etwas 'IT-Crowd'-Like (gleich mal wieder rauskram...).


    BTT:


    Diese Animation sitzt mir schon seit ca. 3 Jahren im Nacken. Ich muss es endlich umsetzen, das macht mich noch verrückt.

    Dann wird's aber Zeit...



    Ich bräuchte eine kurze aber detaillierte Anleitung wie ich wo was machen soll.

    Hast du dir denn schon mal selbst Gedanken gemacht? Zerleg' das "Problem" doch erstmal in einzelne Teile. Der Tipp von 'Mac Bacon' mit dem Ballon-Beispiel sollte wohl allererste Maßnahme sein. Da kann man sicher gut drauf aufbauen/entsprechend abändern und den Rest anhängen. Wobei das natürlich BASIC ist. Je nach Qualitätsanspruch könnte aber auch das funktionieren. Oder man macht einen Assembler/BASIC-Mix draus.


    Hier sind sicher viele in der Lage, dass 'Ding' zusammenzukloppen, oder die Einzelteile zu liefern. Fang' aber mal mit dem Ballon an.


    Hier werden sie geholfen :D:) .

  • Ballonbeispiel gibt es z.B. auch hier in BASIC 2.0
    https://www.c64-wiki.de/index.php/sprite#Beispiele_2


    Das in Assembler umzusetzen, wenn man n Speicherbelegungsplan vor sich hat und n Taschenrechner mit DEZ/HEX auf hat, ist keine Alchemie ^^
    Hier Grafik-Chip https://www.c64-wiki.de/index.php/VIC


    Hier Sound-Chip https://www.c64-wiki.de/index.php/SID


    Alle Assembler-Pseudo-Opcode-Tokens mit Link: https://www.c64-wiki.de/index.php/Kategorie:Assembler-Befehl


    Alle OpCodes http://www.oxyron.de/html/opcodes02.html

  • So, ich habe jetzt mal den Ballon Codeschnipsel im Handbuch durch. Habe auch schon etwas gespielt und erweitert. Ich habe jetzt 3 Luftballons die nach oben scrollen. Aber leider ist da noch ein Fehler im Code. Sobald der erste Ballon außerhalb des Bildschirm ist gibt es einen Fehler. Der Grund ist, dass die Y-Position einen negativen Wert bekommt. (seht selbst im Code). Ich weiß nicht wie ich sie versetzt starten / fliegen lassen kann. FOR...NEXT schleifen verschachteln? Dann scrollen die Ballons unterschiedlich schnell... :-/


    Code mit negativer Y-Position:




    Code mit verschachtelten FOR Schleifen:



    Hmm, ich komme nicht auf die Lösung. Kann mir bitte jemand einen Tip geben?



    DANKE!

  • POKE erlaubt als Werte 0 bis 255 und beschwert sich daher über negative Zahlen. Du könntest entweder eine Sonderabfrage einbauen, die die negativen Werte überspringt (statt "POKE V+1,Y-84" also "IF Y>=84 THEN POKE V+1,Y-84") oder Du wandelst die negativen Werte zu positiven ("POKE V+1,(Y-84) AND 255"). Letzteres würde dafür sorgen, dass die Ballons irgendwann wieder unten auftauchen.

  • Super, jetzt habe ich meine Animation. Nächster Schritt ist dann es in ASM zu übertragen


    Code:

  • einen Großteil des Programms wirst du vermutlich fast 1:1 übersetzen können:


    Aus "DATA" wird je nach verwendetem Assembler ".BYTE", "!BYTE" oder ähnliches.


    Aus POKE <Adresse>,<Festwert> wird


    LDA #<Festwert>
    STA <Adresse>


    Aus SYS 58692 wird einfach JSR 58692.


    Konstantenzuweisungen wie V=53248 kannst du je nach Assemblersyntax direkt übernehmen, evtl. muss auch das "=" durch "EQU" o.ä. ersetzt werden. Sowas sollte aber alles in der Anleitung des verwendeten Assemblers stehen.


    Damit hast du dann jedenfalls schon mal 2/3 des Programs umgewandelt, bleiben nur noch die FOR-Schleifen und IF-THEN-Abfragen :)

  • Als nächstes solltest Du Dich mit (Verzögerungs-)Schleifen in ASM beschäftigen, du wirst sie brauchen.
    Auch Speicherbelegungsplan und VIC-Banking sollten bald interessant für Dich werden, spätestens wenn Du mehr Grafikdaten und Sprites benutzen willst wirst Du merken, dass die VIC-Bank0 ziemlich ungünstig ist. ;)
    Viel Erfolg noch und niemals aufgeben. Mein ASM-Tutor pflegte zu sagen: 'Die Lernkurve bei ASM ist steil'
    PS: Die ganze Sprite-Daten-Poke-Orgie kann man elegant mit einem externen Editor umgehen und die Daten als Binärfile in den Code includen.