Hallo Besucher, der Thread wurde 5,7k mal aufgerufen und enthält 62 Antworten

letzter Beitrag von feuertonne am

Intro-Coding mit acme

  • Hallo,
    Diesen Fred habe ich mal aufgemacht, da gh23 und ich jeweils für sich an einem kleinen Intro ins ASM basteln.
    Ich bin nun nicht der Super-Coder auf dem 64er, da ich mich allzulange auf dem Amiga 'rumgetreiben habe' und deshalb etwas verwöhnt bin.
    Aber die alte HW hat Ihren besonderen Reiz. Wir fangen von der Pike auf an, vielleicht hat der eine oder andere ja hilfreiche Beiträge beizusteuern.

  • Hey das trifft sich gut - ich werkel ja auch schon bereits ne Weile herum - ebenfalls mit Acme - um endlich mal ein kleines Demo auf die Kette zu bekommen.


    Wie geht ihr denn vor dabei?
    Was ich von gh23 gesehen habe - sieht so aus, als hättest Du schon so eine Art "Konzept" - so mit der Stadtsiluette.


    Ich bin das ganze erstmal von der technischen Seite angegangen und versuche mir nach und nach ein paar mehr oder minder simple Effekte anzueignen [wobei man heutzutage da wahrscheinlich kaum mehr von "Effekten" sprechen kann, weil das ja alles standard ist].


    Allerdings fehlt mir persönlich noch die konkrete "Vision" - also quasi das "Thema".


    Was ich bislang zusammengetragen habe:
    - Rasterbars
    - unterer / oberer Border offen
    - Spritescroller seitlich
    - standard $d016 Scroller
    - vertikale Rastersplits im Border
    - "Muster" mit Ghostbyte im Border
    - Charsetlogo + Hires-/MC-Bitmap anzeigen
    - rudimentäres FLD


    Also 80er Jahre Style sollte ich schonmal halbwegs hinbekommen.


    Was noch auf meiner Liste steht:
    - seitlichen Border öffnen
    - "sinnvolles" Spritemultiplexing [also Multiplexing ist ja an sich nicht die Sache - nur etwas hübsches damit anzustellen schon ;) ]
    - halbwegs ordentliche Musik und Grafik machen [bislang teste ich mit gerippten Tunes und schlecht konvertierten Grafiken]
    - eventuell Plasma - wobei ich da noch überhaupt keine Ahnung von habe, wie das funktioniert
    - Upscroller mit Charset oder Sprites


    Hab vor ein paar Monaten angefangen und eigentlich gehofft, bis Weihnachten schonmal was fertig zu haben - aber das dauert doch alles irgendwie länger, als ich dachte. Schon alleine, weil ich leider nicht so viel Zeit habe, wie ich gerne hätte dafür...

  • Wenn Ihr selber definierte Fonts verwenden möchtet, dann kann ich Euch CHARSTAR von hannez empfehlen. Um den extrahierten Font verwenden zu können müßt Ihr folgendes unter ACME beachten

    Code
    1. *=$3800-28
    2. !bin"FNT.P00"


    Der 1x1 Font liegt beim Charstar ab der Adresse $3800, da die Datei sich bei mir nur als P00 extrahieren ließ, muß die Adresse wie oben beschrieben eingegeben werden. Aktiviert wird der Font mit folgendem

    Code
    1. lda $d018 ; font aktivieren
    2. and #$f0
    3. ora #14
    4. sta $d018


    Ich hoffe Ihr könnt damit etwas anfangen :winke:

  • Der 1x1 Font liegt beim Charstar ab der Adresse $3800, da die Datei sich bei mir nur als P00 extrahieren ließ, muß die Adresse wie oben beschrieben eingegeben werden.

    Also ich arbeite immer schön mit "reinen" Binaries was Daten anbelangt. Sogar den Header [Ladeadresse] schnippel ich mit nem PC-Hexeditor weg. Dann verbrät man nicht unnütz Speicher. Spätestens wenn man mit Bitmaps anfängt ist so eine Vic-Bank nämlich mal schnell voll und man kann jedes freie Byte gebrauchen ;)

  • Wenn Du möchtest stelle ich mal meinen Code oder die prg - Datei hier rein?

    Kannste gerne machen. Wahrscheinlich sind wieder nur Flüchtigkeitsfehler drin. Fands lustig, dass ich bei Deinem einen Codebeispiel so viele davon gefunden habe - denn bei meinem eigenen Code finde ich sowas so gut wie nie und brauch auch immer "externe Hilfe" - muss wohl "Betriebsblindheit" sein. Ich selbst verzettel mich immer gerne beim Schleifenbauen - und so wie ich das gesehen habe, hast Du es scheinbar mit den Zahlendrehern - da können wir ja hier so'n richtigen "der Blinde stützt den Lahmen" Thread herausbekommen ;)

  • Zitat

    - eventuell Plasma - wobei ich da noch überhaupt keine Ahnung von habe, wie das funktioniert


    also...das prinzip ist total einfach, ein plasma ist einfach die 2dimensionale visualisierung der überlagerung zweier wellen. zum verstehen des prinzips würde ich empfehlen das ganze erstmal im charsetmode zu probieren, oder mit farben im colorram.


    erstmal rechnet man sich für sowohl X als auch Y achse eine basisfunktion aus, die jeweils typischerweise aus 2 überlagerten sinuswellen besteht:


    fx(x)=sin(x1+xs1)+sin(x2+xs2)
    fy(y)=sin(y1+ys1)+sin(y2+ys2)


    x1/x2/y1/y2 sind dabei counter die einmal pro frame, xs1/xs2/ys1/ys2 counter die einmal pro schritt hoch (oder auch runter) gezählt werden. herauskommen sollte fur x und y jeweils eine tabelle mit sovielen werten wie man "pixel" in der jeweiligen richtung hat.


    der letzte schritt ist dann die kombination der beiden wellen für jeden pixel durch einfaches addieren:


    f(x,y)=fx(x)+fy(y)


    das macht man dann einfach für jeden pixel, den wert den man so kriegt schriebt man entweder direkt in den framebuffer (zb wenn man so einen "brösel" charset benutzt) oder halt über den umweg über eine farbtabelle.


    für cc65 hab ich das mal als beispiel gefummelt, da kann man ganz gut sehen wie es funktioniert.... ist kein hexenwerk :) und ruhig auch mal mit allen möglichen sachen spielen, andre wellen als sinus nehmen, die counter anders hoch oder runterzählen usw....


    wenn man dann das prinzip verstanden hat kann man auch mal drüber nachdenken wie denn wohl diese "hires" plasma sachen in aktuellen demos funktionieren :) (soooo viel anders ist das da nämlich auch nicht =P)

  • Irgendwo im csdb Forum gabs mal ein ganz gutes Beispiel für nen einfachen Plasma. Hatte das mal zum Testen ausprobiert.
    Wer sich dafür interessiert kanns sich ja mal anschauen. Ist zwar für Kick Assembler, sollte sich aber einfach nach acme übertragen lassen. Der für den Plasma interessante Teil findet sich ab Label "lp3", Das Charset dazu liegt ab $2800 (Label "chars").

  • Ich habe gerade die Bescherung und den anderen Quatsch hinter mich gebracht, dabei habe ich heimlich weitergecodet. Ergebnisse gibts morgen.
    Hehe, macht Spaß . Irgendwann hat jeder mal angefangen.

  • Jau hab mir sowas in der Richtung schon gedacht: "einfach" irgendwelche Funktionen auf den Charset anzuwenden... So wie es aussieht hantiert man scheinbar hier auch wieder gerne mit dem guten alten Sinus. Im Kopf habe ich da ja schon ganz andere perverse Spielereien, was die grundlegenden Funktionen anbelangt. Aber egal. Fakt ist scheinbar, dass man eben nur anhand vorher berechneter Tabellen Pixel oder Farben setzt, richtig?

  • So, hier mal was zu Lachen für die Profis:
    Die Idee ist mir auf dem letzten F64-Nord-Treffen gekommen. Also habe ich mich heute mal hingesetzt und was zusammengefrickelt.
    Vielleicht für einen Party-Report o.ä.( :winke:  Kratznagel)


    Kein IRQ (!), und als Mukke erstmal ein Goatracker-Sample (wird aber noch ersetzt). Das Ganze ist mit dem exomizer gecrunched,
    weil die Code-Brocken wild im Speicher verteilt sind :)


    Roms und Timer kommen auch noch aus, hatte ich noch keine Lust zu.
    IRQ's fummel ich vielleicht morgen rein.
    Da soll auch noch unbedingt ein Scroller rein damit die Nachwelt von unserem wilden Treiben auf dem Treffen erfährt. :D
    Das macht mir allerdings noch etwas Probleme da der Scroller im unteren Border sein soll. ?(

  • Das macht mir allerdings noch etwas Probleme da der Scroller im unteren Border sein soll. ?(

    Das hier ist ganz praktisch als Anregung - leider einfach so ausm Demo rausgerissen, so dass man noch einiges ändern und entsprechend anpassen muss.
    http://codebase64.org/doku.php…:scrolltext_using_sprites


    Sprites kann man ja im Border anzeigen - und der Charset wird dann einfach durch Sprites geROLt.
    Und unteren/oberen Border öffnen ist ziemlich easy:
    http://ebspso.dnsalias.org/c64…C64/Vic/html/dsec3e1.html


    Eine der wenigen Sachen, die bei mir auf Anhieb geklappt haben ;)