Basic Plot / Drawto in Assembler

Moderator: Rockford

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von Dr. Irata »

... nochmal ein kurzes Wort zu MADS:

Eingebunden mit WUDSN in Eclipse mit dem Emulator ist das für mich wirklich eine optimale Umgebung, um mit moderner Technik Assemblercode für unseren geliebten Atari zu entwickeln!! Ich könnte mir nichts besseres vorstellen - vielleicht wäre Action! mal interessant. Kann man das in Eclipse einbinden???

Benutzeravatar
cas
Beiträge: 811
Registriert: 18.06.2021 21:01
Wohnort: Solar System
Has thanked: 180 times
Been thanked: 361 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von cas »

[quote="Dr. Irata" post_id=15255 time=1685089261 user_id=250]
Kann man das in Eclipse einbinden???
[/quote]

ACTION! läuft auf dem Atari als Cart, da müsste man den Emulator per Script "fernsteuern". Das habe ich noch nicht getestet, ob es einen Emulator gibt, der das kann. Wäre Interessant das mal herauszufinden.

Unter

New Frontiers in High-Level 6502 Programming
https://8bitworkshop.com/docs/posts/201 ... rogramming

gibt es eine lange Liste von sehr interessanten (zum Teil neuen) Programmiersprachen für den A8. Ich suche noch Mitstreiter, welche an einer Artikel-Serie für das ABBUC Magazin mitmachen um diese Sprachen zu testen und auch von der Code-Qualität zu vergleichen.

Bei Interesse bitte melden.

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von Dr. Irata »

... interessant mit den Sprachen, zeitlich schaffe ich das leider im Moment nicht, auch habe ich ja nur Mac und die meisten Entwicklungen laufen nur auf Windows...


Thema Plot/Drawto:

Habe jetzt mal kurz in der Vormittagszeit den Code wie oben geschrieben vervierfacht und so das "Problem" mit der Phasenverschiebung sehr einfach gelöst... Geschwindigkeitszuwachs von ca. 90 Linien/Sekunde auf 220 Linien/Sekunde. Mal sehen, ob ich das noch weiter steigern kann...

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von Dr. Irata »

... 250 ... mehr geht nicht! Das betrifft natürlich gemessenen Linien, die zwischen mittellang und sehr lang geplottet werden - also die ganze Diagonale des Bildschirmes bei 160/96 Auflösung betrifft.
Wenn ich jetzt in einem 3D Spiel von deutlich kürzeren Linien ausgehe, dann schaffe ich so ca. 500-600 Linien oder mehr pro Sekunde.
Das weitere Vorgehen wird jetzt sein, eine komplette Plotroutine für alle Gerade zu schreiben, dann möchte ich eine Linie animiert darstellen. Danach wird das ganze fürs nächste Heft aufgearbeitet incl. Dokumentation und Code.

Anschließend wird dieses Thema hier geschlossen und ich gehe weiter in die nächste Planung von 3D TempleOfEris, wo ich zunächst ein reines 3D-Raumgerüst erstellen möchte, was man mit dem Joystick entsprechend der Bewegung durch den Raum steuern kann.
Danach kommen die Wandfüllroutinen - also die mögliche Oberfläche (diesen Part stelle ich mir sehr schwierig vor).

Danach sollten (wenn ich überhaupt so weit komme) die Aliens, Schüsse, Kollisionserkennung folgen, dann das gesamte Labyrinthdesign... (in ca. 10 Jahren bin ich dann vielleicht fertig :lol: )

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von Dr. Irata »

... jetzt habe ich die Plotroutine fertig und alle Spezialfälle (Richtungen, Steigungen) sind drin und funktionieren - ein kleiner Fehler muss noch drin sein habe ich gerade gesehen - und kurz mal eine kleine allerdings nicht sehr gute Routine geschrieben, um eine Linie zu zeichnen und die per Random über den Bildschirm zu bewegen.
Damit ist das Kapitel hier fertig... ich arbeite das noch fürs Magazin auf und gehe dann zurück zu Temple Of Eris!
draw.mov
(1003.69 KiB) 31-mal heruntergeladen

Benutzeravatar
Olix
Beiträge: 933
Registriert: 17.08.2021 07:06
Has thanked: 113 times
Been thanked: 394 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von Olix »

vielleicht noch per Pageflipping arbeiten und dann Quasi die neue Zeile erst anzeigen wenn sie fertig gezeichnet ist...

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von Dr. Irata »

... ich habe jetzt auch die Drawfehler raus und mache den Plot jetzt im VBI, damit das etwas besser aussieht (Danke Janko für den Hinweis). Die Bewegung ist zufallsgesteuert und daher nicht so schön "rund", man müsste Bewegungsmuster hinterlegen, damit es eine feine Demo wird, das habe ich jetzt nicht noch gemacht...
Hier aber nochmal ein kleiner Ausschnitt aus der Draw-Bewegung:
draw2.mov
(1.25 MiB) 40-mal heruntergeladen

Benutzeravatar
DjayBee
Beiträge: 598
Registriert: 17.08.2021 04:02
Has thanked: 379 times
Been thanked: 166 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von DjayBee »

Wozu willst du die Linie eigentlich verwenden?

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von Dr. Irata »

ursprünglich wollte ich für mein nächstes Spiel schauen, ob es möglich ist eine Art Ego-Shooter zu machen mit einem 3D Labyrinth... da wurde mir schnell klar, daß ich dafür ganz viele Linien zeichnen lassen muss.
Linien zeichnen in Assembler - gar nicht so einfach. Daher jetzt dieser Beitrag incl. Bresenham- Algorithmus.
Ob ich das am Ende hinbekomme? Fraglich... erstmal alles im Rahmen einer Machbarkeitsstudie ;-)

Benutzeravatar
cas
Beiträge: 811
Registriert: 18.06.2021 21:01
Wohnort: Solar System
Has thanked: 180 times
Been thanked: 361 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von cas »

Noch gefunden (und gerade geschaut):

Let's Code MS DOS 0x20: Bresenham Line Drawing
https://www.youtube.com/watch?v=pMZ-nWpHJdo

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von Dr. Irata »

sehr cool... allerdings brauche ich jetzt noch einen Füllalgorithmus ;-)

Benutzeravatar
Irgendwer
Beiträge: 67
Registriert: 25.08.2021 19:05
Has thanked: 15 times
Been thanked: 30 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von Irgendwer »

Dr. Irata hat geschrieben:
02.06.2023 13:44
sehr cool... allerdings brauche ich jetzt noch einen Füllalgorithmus ;-)
Na ja, wenn Du ein ausgefülltes "Labyrinth" haben möchtest, brauchst Du keine Linienzeichenroutine.
Der einzig gangbare Weg, so etwas einigermaßen zügig auf dem Atari hinzubekommen ist ein sogenannter "Raycaster". Zu diesem Thema gibt es sehr viel Literatur, Youtube-Tutorials, Beispielcode.

Deine Linienroutine ergibt allerdings Sinn, falls Du eine Drahtgitter 3d-Umgebung erstellen möchtest. Dann brauchst Du aber keinen 'Füllalgorithmus'...

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von Dr. Irata »

... bin mir da noch nicht so ganz sicher, wie es wird.... zunächst probiere ich mal aus die Flächen auch mit vertikalen Drawlinien zu "füllen" - so war mein Plan. Die Routinen sind ja schnell und einfach und wenn ich die schrägen Geraden zeichne, dann kann ich gleichzeitig die Linien mit vertikalen verbinden. Ob das gut funktioniert, weiß ich nicht... so etwas habe ich ja noch nie gemacht.

Benutzeravatar
cas
Beiträge: 811
Registriert: 18.06.2021 21:01
Wohnort: Solar System
Has thanked: 180 times
Been thanked: 361 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von cas »

Das Thema lässt mich nicht los ... heute gab es auf HackerNews (https://news.ycombinator.com) einen Link zu diesem Blog-Post

BRR Lines
A new line drawing method for the cycle savvy
http://www.quiss.org/boo/

Dort hat jemand aus dem C64-Land einen Linien-Algorithmus, welcher oft schneller als Bresenham ist. Ist C64, also anderer Speicher-Layout, aber vielleicht für den A8 adaptierbar.

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von Dr. Irata »

vielen Dank ... mega spannend

Benutzeravatar
LarsImNetz
Beiträge: 149
Registriert: 24.08.2021 18:27
Has thanked: 105 times
Been thanked: 79 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von LarsImNetz »

Hi,
hier mal eine simple Line-Demo.
LINE-DEMO.XEX
(3.78 KiB) 28-mal heruntergeladen
Die zeichnet 17 Pixel auf den Screen. Die Pixel bewegen sich alle gleich schnell in unterschiedliche Richtungen. Erreicht ein Pixel den Rand, fängt er wo anders wieder an.

Wenn der Abstand zwischen 2 Pixeln eine gewisse Schwelle erreicht hat, wird zwischen ihnen eine Linie gezeichnet. Je nach Abstand unterschiedlich hell.
Der Algorithmus für die Abstände ist teuer (~O(n^2/2))

Als Line-Routine hab ich die von ERU verwendet (mal in AtariAge gefunden), da dieser saubere Linien zeichnet. Die Rattenschnelle Line-Version hab ich auch mal probiert, aber die Animation ist nicht merklich flotter, dafür fällt extrem stark auf, wie schlecht der Line-Algorithmus wirklich ist.

Als DoubleBuffer habe ich mir etwas zusammengezimmert, es ist nicht perfekt, aber besser als Flackern oder immer den ganzen Screen kopieren.

Nett anzusehen, aber als Speed-Test nicht zu gebrauchen.

LG
Lars

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von Dr. Irata »

... wie funktioniert denn der Algorithmus von Eru??

Benutzeravatar
LarsImNetz
Beiträge: 149
Registriert: 24.08.2021 18:27
Has thanked: 105 times
Been thanked: 79 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von LarsImNetz »

Wie genau, hab ich nicht analysiert, aber hier hab ich den her:
https://forums.atariage.com/topic/23169 ... lgorithms/

Der superschnelle ist hier:
https://forums.atariage.com/topic/21162 ... e-drawing/

Und Lines in Chars gibt es dann hier:
http://codebase64.org/doku.php?id=base:lines

LG
Lars

Benutzeravatar
cas
Beiträge: 811
Registriert: 18.06.2021 21:01
Wohnort: Solar System
Has thanked: 180 times
Been thanked: 361 times
Kontaktdaten:

Re: Basic Plot / Drawto in Assembler

Beitrag von cas »

Neues Video über schnelle Computergrafik von PCRetroTech:

Animating Ellipses on a Vintage 386 Computer
https://www.youtube.com/watch?v=d8ulXJZD0P8

erklärt die Algorithmen hinter Linien, Kreise und Ellipsen

Antworten

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Natuvell und 1 Gast