Basic Plot / Drawto in Assembler
Moderator: Rockford
- Dr. Irata
- Beiträge: 963
- Registriert: 24.08.2021 14:40
- Has thanked: 118 times
- Been thanked: 283 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
... 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???
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???
- cas
- Beiträge: 861
- Registriert: 18.06.2021 21:01
- Wohnort: Solar System
- Has thanked: 196 times
- Been thanked: 399 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
[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.
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.
- Dr. Irata
- Beiträge: 963
- Registriert: 24.08.2021 14:40
- Has thanked: 118 times
- Been thanked: 283 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
... 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...
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...
- Dr. Irata
- Beiträge: 963
- Registriert: 24.08.2021 14:40
- Has thanked: 118 times
- Been thanked: 283 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
... 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 )
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 )
- Dr. Irata
- Beiträge: 963
- Registriert: 24.08.2021 14:40
- Has thanked: 118 times
- Been thanked: 283 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
... 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!
Damit ist das Kapitel hier fertig... ich arbeite das noch fürs Magazin auf und gehe dann zurück zu Temple Of Eris!
- Olix
- Beiträge: 1176
- Registriert: 17.08.2021 07:06
- Has thanked: 144 times
- Been thanked: 525 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
vielleicht noch per Pageflipping arbeiten und dann Quasi die neue Zeile erst anzeigen wenn sie fertig gezeichnet ist...
- Dr. Irata
- Beiträge: 963
- Registriert: 24.08.2021 14:40
- Has thanked: 118 times
- Been thanked: 283 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
... 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:
Hier aber nochmal ein kleiner Ausschnitt aus der Draw-Bewegung:
- Dr. Irata
- Beiträge: 963
- Registriert: 24.08.2021 14:40
- Has thanked: 118 times
- Been thanked: 283 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
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
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
- cas
- Beiträge: 861
- Registriert: 18.06.2021 21:01
- Wohnort: Solar System
- Has thanked: 196 times
- Been thanked: 399 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
Noch gefunden (und gerade geschaut):
Let's Code MS DOS 0x20: Bresenham Line Drawing
https://www.youtube.com/watch?v=pMZ-nWpHJdo
Let's Code MS DOS 0x20: Bresenham Line Drawing
https://www.youtube.com/watch?v=pMZ-nWpHJdo
- Dr. Irata
- Beiträge: 963
- Registriert: 24.08.2021 14:40
- Has thanked: 118 times
- Been thanked: 283 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
sehr cool... allerdings brauche ich jetzt noch einen Füllalgorithmus
- Irgendwer
- Beiträge: 77
- Registriert: 25.08.2021 19:05
- Has thanked: 16 times
- Been thanked: 34 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
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'...
- Dr. Irata
- Beiträge: 963
- Registriert: 24.08.2021 14:40
- Has thanked: 118 times
- Been thanked: 283 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
... 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.
- cas
- Beiträge: 861
- Registriert: 18.06.2021 21:01
- Wohnort: Solar System
- Has thanked: 196 times
- Been thanked: 399 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
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.
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.
- LarsImNetz
- Beiträge: 170
- Registriert: 24.08.2021 18:27
- Has thanked: 127 times
- Been thanked: 89 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
Hi,
hier mal eine simple Line-Demo.
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
hier mal eine simple Line-Demo.
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
- LarsImNetz
- Beiträge: 170
- Registriert: 24.08.2021 18:27
- Has thanked: 127 times
- Been thanked: 89 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
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
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
- cas
- Beiträge: 861
- Registriert: 18.06.2021 21:01
- Wohnort: Solar System
- Has thanked: 196 times
- Been thanked: 399 times
- Kontaktdaten:
Re: Basic Plot / Drawto in Assembler
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
Animating Ellipses on a Vintage 386 Computer
https://www.youtube.com/watch?v=d8ulXJZD0P8
erklärt die Algorithmen hinter Linien, Kreise und Ellipsen
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast