Sie sind nicht angemeldet.

Holzroller

Fortgeschrittener

Beiträge: 431

Registrierungsdatum: 22. September 2013

Wohnort: Markkleeberg

Beruf: IT-Zeug

  • Nachricht senden

1

Montag, 20. Juli 2015, 18:20

Zwei kleine Eigenproduktionen aus den 90ern...

Hallo Freunde,

bin letztens bissl im Netzt rumgeschnarcht und hab mal wieder nach Spuren meiner Jugend gesucht. Und ich bin diesmal tatsächlich fündig geworden, konnte es kaum glauben.

Hier:
http://janeway.exotica.org.uk/release.php?id=17990

und hier:
http://janeway.exotica.org.uk/release.php?id=25870

Da hat doch tatsächlich irgendjemand meine allererste Demo (Members of Fun - Dentro) sowie eine kleine 40k - Demo, welche kurz nach dem joinen bei Mador entstanden ist, hochgeladen...
(Beide "Noblemans" bin/war ich - muss direkt mal ne Korrekturanfrage an die Betreiber schicken... : )

Beide demos sind ziemlich "hart" gecoded. Also zu allererst alle interrupts ausgeschalten und dann frech den RAM "benutzt". Hier wurde nix beim System allociert. Bis auf den Stack (A7), den hab ich am Ende natürlich wieder hergestellt...
Am besten packt ihr die executables auf eine bootfähige Diskette (vorher besser jeweils das ".txt" entfernen - das war notwendig, damit ich die Dateien hier hochladen kann)) und bootet den Amiga mit der disk. Dann direkt aus der Shell die entspechende Datei starten/Laden... (Alternativ halt die Workbench starten und die Demos dann von der Cli aus starten). Ach ja: beide sind aufm 500er mit Kick 1.3 entstanden. Dort laufen Sie auf jeden Fall. Wenn die durch sind (zumindest bei NightInMotion, nach der MOF-Dentro fehlt lediglich der Mauszeiger... :) ) muss dann aber resettet werden. Wie gesagt - ich hatte mir alle Ressourcen so geschnappt, wie ich sie brauchte, eben ohne das BS zu fragen...

Die MOF-Dentro läuft aber auch wunderbar unter WHD-Load. Einfach igame starten und dann mit der rechten Maustaste im Menü oben unter "Acton" "add non-whdload game" wählen... Der Rest erklärt sich von selbst. (geht sicher auch irgendwie ohne igame). Funktioniert übr. auch mit "Night in Motion", allerdings fehlt dann der Ton.....

Also, wer Lust hat, kann sich´s ja mal anschauen und Feedback geben bitte! :)

Achja - die Coder unter euch dürfen auf Fragen fragen...

Und nicht lachen, was das englisch betrifft, das war noch jung, damals.... Außerdem gabs noch kein translate.google usw. (Stichpunkt "gouraud-shading" in Mador-40k... ) :) :)

Na dann guckt mal! :)

Grüße
Holzi
»Holzroller« hat folgendes Bild angehängt:
  • DSC_1008.jpg

CB1JCY

Hausmeister

Beiträge: 1 523

Registrierungsdatum: 23. Juni 2012

Wohnort: Dresden

  • Nachricht senden

2

Montag, 20. Juli 2015, 21:29

gut gemacht

Mador-NightMotion : läuft auch auf einem A1200. Das muss man wirklich durchlaufen lassen, um alle Effekte zu sehen.
MOF-Dentro: Geht wohl nur auf nicht-AGA Amigas. Auf einem A600 gehts sauber. Interessant finde ich das Mehrfach-Scrolling.
Die Musik beider Demos ist mir persönlich zu eintönig, Aber wahrscheinlich dem knappen Platz geschuldet ? Ansonsten typisch für die Tecnozeit. ;)
Englisch: kann ich heute noch nicht :D
Chat im EUIRC (#amiga-dresden.de)

Dr Guru

Anfänger

Beiträge: 28

Registrierungsdatum: 21. September 2013

  • Nachricht senden

3

Dienstag, 8. September 2015, 22:18

beeindruckt

Ich habe mir NightInMotion angesehen. Ich bin beeindruckt! Ich weiß nicht, ob ich hier als Coder qualifiziere. Zwar habe ich inzwischen ein bisschen anderweitige Programmiererfahrung, aber meine Kenntnisse in Assembler und C auf dem Amiga sind nie über ein bisschen Herumprobieren hinausgekommen. Da es mich aber sehr interessiert, stelle ganz einfach trotzdem ein paar Fragen und entschuldige mich, falls einiges darunter trivial ist:

1. Sind alle Effekte in Full Frame Rate 50Hz?
2. Ist das Musikstück ein MOD-File?
3. Wie funktioniert generelle so eine Musikabspielroutine (grob)? Sind das Interrupts, die der CPU sagen, dass sie Daten an Paula schicken soll? Läuft das über den Copper? Gibt es P'robleme, dass die Musikabspielroutine dem Prozessor für andere Effekte notwenige Zyklen klauen könnte?

Zum Tunneleffekt:
4. Läuft das komplett über die CPU oder können hier in irgendeiner Form Blitter und Copper genutzt werden?
5. Verwendest du DoubleBuffering oder schaffst du es, die Bildschirmspeicheränderung durchzuführen, wenn der Rasterzeiger außerhalb des sichtbaren Bereichs ist?
6. Wird der Zoom mittels linearer-Algabra-3D-Tranformation durchgeführt oder sind die Daten alle 2d gespeichert und werden in 2d transformiert?
7. Wird die Verschiebung nach oben/unten durch eine tatsächliche Änderung des Bildschirmspeicherinhalts erzeugt oder wird dies mittels Verschiebung der Startadresse des Bildschirmspeichers bewirkt?

Der Rotationszoomer ist natürlich, seit der WoC-Demo von Sanity, ein klassischer Spitzeneffekt. Ich sehe aber mal davon, hierzu Fragen zu stellen, da ich im Moment null Vorstellung habe, wie man so etwas bewerkstelligen könnte.

Holzroller

Fortgeschrittener

Beiträge: 431

Registrierungsdatum: 22. September 2013

Wohnort: Markkleeberg

Beruf: IT-Zeug

  • Nachricht senden

4

Mittwoch, 9. September 2015, 23:15

Fachfragen, ich freu mich... :)

Hi Dr. Guru,

ich freu mich, dass dir NIM gefällt. ASM am Amiga macht wirklich Spaß (C hatte ich nie gemocht - NIM ist auch komplett in ASM geschrieben)... Aber zu deinen Fragen:

1. Sind alle Effekte in Full Frame Rate 50Hz?
--> Ja, natürlich, alles 50Hz. Am besten packst du dir die Datei auf eine bootfähige Diskette und startest sie via shell/cli - direkt auf einem A500. Dann kannst du NIM quasi bare metal genießen und siehst auch, dass alle Effekte mit 50hz laufen
2. Ist das Musikstück ein MOD-File?
--> jupp, ist ein typisches Soundtracker/Noicetracker-Format
3. Wie funktioniert generelle so eine Musikabspielroutine (grob)? Sind das Interrupts, die der CPU sagen, dass sie Daten an Paula schicken soll? Läuft das über den Copper? Gibt es P'robleme, dass die Musikabspielroutine dem Prozessor für andere Effekte notwenige Zyklen klauen könnt
--> Die Abspielroutine besteht aus zwei Teilen: einem "Init"-Teil und einem "loop"- oder "music"-part. Ersterer wird einmalig irgendwann zum Start des Programms/Demos angesprungen. Vorher müssen aber einige Daten- und Address-Register auf dem Stack gesichert mit movem.l d0-d7/a0-a2,-(a7) gesichert werden. Am Ende der Init werden dann alle Register wieder hergestellt: movem.l (a7)+,d0-d7/a0-a2

Das Modul selbst wird via Sprung in den music/loop etc...einmal je Frame (also je 50tel sek) abgespielt. Dass kann entweder ganz klassich über die eigene Basis-Rotine geschehen (wenn du sicher stellen kannst, dass die Routine je Frame einmal angesprungen werden kann). Oder du erledigst das via Interrupt. (war bei mir fast nie möglich, da ich meist zu allererst sämtliche Interuppts via move #$4000, dff09a deaktiviert hab).

Im Anhang findest du eine meiner ASMOne-Sources dazu (das .jpg im Dateinamen musst du entfernen, dann kannste die Datei sogar mit dem Win Editor lesen)

Und ja, die Abspielroutine verbraucht einige Rasterzeilen... Es gibt hier allerdings Unterschiede. Ich meine, dass wir zum Schluss eine Fasttracker-Variante verwendet hatten. Die war mit Abstand die schnellste...


Zum Tunneleffekt:
4. Läuft das komplett über die CPU oder können hier in irgendeiner Form Blitter und Copper genutzt werden?
--> Die Dots werden via CPU gesetzt. Der Copper kann leider nur aller 8 Taktzyklen/Pixel (beim A500) ein Register beschreiben (beispielsweise $dff180-Hintergrundfarbe bzw. colour00). Damit kannst du keine pixelgenaue Bewegung erzeugen (bei schnelleren Amigas geht das zumindest im 2x2-Pixelformat) Mit guten Routinen bekommt man aber auch 4x4 am A500 hin...
5. Verwendest du DoubleBuffering oder schaffst du es, die Bildschirmspeicheränderung durchzuführen, wenn der Rasterzeiger außerhalb des sichtbaren Bereichs ist?
--> Triple-Buffering: Frame 1 wird gezeigt, Frame zwei wird gelöscht (via Blitter), Frame drei wird erzeugt (via CPU)
6. Wird der Zoom mittels linearer-Algabra-3D-Tranformation durchgeführt oder sind die Daten alle 2d gespeichert und werden in 2d transformiert?
Die Daten sind in 3d gespeichert (genauer gesagt ein einzelner Dot-circle) und werden dann entsprechend dupliziert und transformiert.
7. Wird die Verschiebung nach oben/unten durch eine tatsächliche Änderung des Bildschirmspeicherinhalts erzeugt oder wird dies mittels Verschiebung der Startadresse des Bildschirmspeichers bewirkt?
--> hier werden offsets auf die 3d-Koordinaten addiert.

Der Rotationszoomer ist natürlich, seit der WoC-Demo von Sanity, ein klassischer Spitzeneffekt. Ich sehe aber mal davon, hierzu Fragen zu stellen, da ich im Moment null Vorstellung habe, wie man so etwas bewerkstelligen könnte.

--> Ist nen copper-rotator... :) hier wird eine copperlist verwendet, welche von der cpu ständig neu beschrieben wird (gaaanz banal erklärt)...

Ich hoffe ich konnte deine Fragen beantworten. Und wenn du Lust hast tatsächlich bissl asm zu coden, dann helf ich gern... :)

Grüße
Holzi

Edit: Jetzt sollte jeder Interessierte hier im Forum die Soundtracker-Routine haben. Ich nehm die dann mal wieder raus... :)