Tutorial zum Erstellen von REU Nuvies (16MB Kurzfilme) für die 1541 Ultimate Cartridges bzw. für den WinVice Emulator

Es gibt 180 Antworten in diesem Thema, welches 67.488 mal aufgerufen wurde. Der letzte Beitrag (20. Mai 2024 um 10:32) ist von CapFuture1975.

  • Ich habe nochmal eine Version des "schnellen" Zufallsbilderprogramms gebastelt, die versucht die Anzeigedauer der Bilder in der vorhandenen Playlist zu finden (durchsucht werden die ersten 32 Einträge nach dem Playlistbefehl "90 xx").


    Wird der Befehl "90 xx" gefunden, wird der entsprechende Wert xx auch in der neuen Playlist gespeichert. Es wird nur der erste gefundene "90 xx"-Wert für die neue Playlist verwendet.


    Sollte vor dem Befehl "90 xx" der Befehl "by ??" für den Stepperspeed gefunden werden, wird dieser Wert herangezogen, um die Abspieldauer anzupassen (ein höherer Wert als 3 für den Stepperspeed sorgt dafür, dass bei gleichem "90 xx"-Wert das Bild länger angezeigt wird. Das Programm passt den "90 xx"-Wert entsprechend an (damit die Anzeigedauer nahezu die gleiche ist, max. ca. 20 Sekunden), da es keinen Stepperspeedbefehl in die Playlist speichert.


    Wird kein "90 xx"-Wert gefunden, wird der Standardwert (für ca. 3 Sek Anzeigedauer) gewählt.


    Die Version mit automatischer Abspieldauererkennung in der Originalplaylist hat den Dateiname "Slideshow_Zufall_schnell_507_Bilder_auto.prg" im Archiv: Bitte melde dich an, um diesen Anhang zu sehen.

    **** Bitte melde dich an, um diesen Link zu sehen. **** Bitte melde dich an, um diesen Link zu sehen. **** Bitte melde dich an, um diesen Link zu sehen. **** Bitte melde dich an, um diesen Link zu sehen. ****

  • Nein!
    Als Trickfilm schafft man max. 76 sec bei 10 fps.
    Man kann um die 760 Einzelbilder mit SID Musik in die REU laden, mehr passen in die 16MB nicht rein.


    Ich stelle mir gerade die Frage: Kann man in Assembler, nicht direkt auf die SD Karte zugreifen? Dann würde die Beschränkung von 16MB fallen und man könnte sich das laden einer Datei in die REU sparen. Wäre die SD Karte auf FAT 32 formatiert, könnten solche Dateien bis zu 4 GB groß sein. Im "Chameleon progmanual" habe ich leider keine Hinweise gefunden, wie ein Direktzugriff aussehen würde. Ist hier jemand, bei ne Ahnung hat?

  • Im "Chameleon progmanual" habe ich leider keine Hinweise gefunden, wie ein Direktzugriff aussehen würde. Ist hier jemand, bei ne Ahnung hat?

    Aktuell gibt es keine Möglichkeit direkt auf die SDCard als Massenspeicher zuzugreifen. Ist mir auf jeden fall nicht bekannt. Man kann "nur" Images mounten. Das wäre auf jeden Fall noch eine super Funktion.

  • Ich habe ein weiteres Nuvietool programmiert: der Nuvie-Infoscreeneditor

    Mit diesem Programm ist es möglich, den Infoscreen einer Nuvie-Datei nachträglich zu bearbeiten, zu löschen oder neu zu erstellen (falls das Nuvie noch keinen hat). Endlich muss man sich nicht mehr ärgern, wenn man bei einem fertigen Nuvie einen Tippfehler im Infoscreen bemerkt :) (früher musste man, um das zu korrigieren, das Nuvie mit dem Nuviemaker komplett neu machen)

    Vor der eigentlichen Bearbeitung kann man Zeichen-, Hintergrund- und Rahmenfarbe wählen. Vorgegeben sind Standardwerte bzw. die vorhandenen Werte der Nuvie-Datei.

    Beim Bearbeiten des Infoscreens muss man etwas vorsichtig sein: da mein Programm nur die Systemroutine zur Eingabe benutzt, kann man versehentlich den Text vom Infoscreen "wegscrollen", wenn man mit dem Cursor am unteren Bildschirmrand ist und weitere Zeilen nach unten geht.

    Ist man mit dem Bearbeiten fertig, drückt man die Return-Taste (auch hier bitte aufpassen, mit dem Cursor nicht in der letzten Zeile zu sein, wegen wegscrollen).

    Sollte man die Return-Taste versehentlich zu früh gedrückt haben, ist das auch kein Problem: einfach das Programm nochmal mit RUN starten und die Bearbeitung fortsetzen.

    Wichtig: immer vorher ein Backup der Nuvie-Datei machen, falls etwas schief geht.

    Viel Spaß beim Ausprobieren :)

  • Ich habe ein weiteres Nuvietool programmiert: der Nuvie-Infoscreeneditor

    Mit diesem Programm ist es möglich, den Infoscreen einer Nuvie-Datei nachträglich zu bearbeiten, zu löschen oder neu zu erstellen (falls das Nuvie noch keinen hat). Endlich muss man sich nicht mehr ärgern, wenn man bei einem fertigen Nuvie einen Tippfehler im Infoscreen bemerkt (früher musste man, um das zu korrigieren, das Nuvie mit dem Nuviemaker komplett neu machen)

    Super! Vielen Dank :)

  • Du kommst ja aus dem programmieren gar nicht mehr raus.
    Vielen Dank für deine nützlichen Tools nochmal.

    Neues Teil:
    Bitte melde dich an, um dieses Medienelement zu sehen.

    REU Download wie immer

  • Ab 12:50 hast du Musik von Outrun Europe im Nuvie - wie hast du die da rein bekommen ? Das sid-file ist ja nicht gerade sehr "nuviemakerfreundlich" (sehr krumme Adressen und mehrere Tunes im sid):

    Load address: $0C14
    Init address: $0C16
    Play address: $21C6
    Number of songs: 3

    Hast du dafür spezielle Programme verwendet ?

    **** Bitte melde dich an, um diesen Link zu sehen. **** Bitte melde dich an, um diesen Link zu sehen. **** Bitte melde dich an, um diesen Link zu sehen. **** Bitte melde dich an, um diesen Link zu sehen. ****

  • Also ich kann dir jetzt nicht schwören, dass es bei outrun so war, aber normalerweise relocate ich die sids mit "sidreloc"
    Bitte melde dich an, um diesen Link zu sehen.
    nach $1100 mit dem Befehl:

    sidreloc.exe -p 11 sound.sid sound_1100.sid

    Aus der command shell heraus.

    dann spiele ich den Sid unter sidplay ab und schaue in den Properties, welche InitAdress und PlayAdress der Sid nun hat.

    Diese müssen nun noch "per Hand" angepast werden.
    Also Sid als *.dat im C64 Format abspeichern.
    Nun im Nuviemaker den Sid ( als .dat aus dem Sidplay exportiert ) laden, dann den Vice Monitor starten und folgendes eingeben:

    a 1000
    jmp >InitAdress<
    jmp >PlayAdress<

    Danach steht also bei $1000 der jump zur Init adresse und bie $1003 der Jump zur Playadresse, genauso, wie es der Nuvieplayer haben will.

    Will man einen anderen Subtune als den ersten abspielen, muss VOR dem Aufruf der Init Routine der Accu mit der Nummer des Subtunes geladen werden.

    ich schreib also anstatt jmp >Init Adress< bei $1000 noch einen zwischen Jump ( z.B.)

    jmp $1006
    dort setze ich den accu auf sagen wir mal 3
    also
    lda Bitte melde dich an, um diesen Link zu sehen.
    und dann erst kommt der Jump in die Init Routine
    also
    Jmp >InitAdress<

    Eintippen müsste man also folgendes:

    a 1000
    jmp 1006
    jmp >PlayAdress<
    lda Bitte melde dich an, um diesen Link zu sehen.
    jmp >InitAdress<

    vielleicht nochmal zur kontrolle eintippen :

    x
    d 1000

    um zu schauen, ob alles richtig im Speicher steht

    Monitor verlassen und wie gewohnt fortfahren und hoffen, dass es klappt.

  • Vielen Dank für die Anleitung :)

    Ich habe es mal anhand von Outrun_Europe_levels.sid ausprobiert und schreibe hier nochmal die Schritte als Beispiel auf:


    1. mit Sidreloc Sid auf Page 11 relocaten:
    sidreloc.exe -p 11 Outrun_Europe_levels.sid sound_1100.sid

    2. sound_1100.sid mit Sidplay2/w als *.dat speichern (File -> Save as... -> Dateityp "C64 data (*.dat)" einstellen -> Speichern)

    3. in Sidplay2/w während sound_1100.sid geladen ist File -> Properties... gewählt, um das Fenster mit den Sid-Eigenschaften zu sehen (offen lassen, da man die Werte gleich braucht)

    4. Nuviemaker im Vice-Emulator starten und die *.dat-Datei als Music filename angeben

    5. Monitor öffnen und folgendes eingeben (nun brauchen wir die Werte des Sid-Eigenschaftsfensters: Init address: $1116, Play address: $26c6 - dieser Wert ist bei jedem Tune anders)

    a 1000
    jmp 1116
    jmp 26c6

    6. Monitor schließen und wie gewohnt im Nuviemaker fortfahren (Anzahl abzuspielender Frames eingeben usw.), wenn es geklappt hat, hört man dann die Musik


    Das mit dem Subtune habe ich auch ausprobiert, hier muss man beachten, dass die Zählung offenbar bei 0 beginnt (zumindest ist es beim Sid-File von Outrun Europe so), hierbei ändert sich Schritt 5 folgendermaßen, wenn man den dritten Subtune (einzugeben ist lda Bitte melde dich an, um diesen Link zu sehen.) benutzen möchte:

    a 1000
    jmp 1006
    jmp 26c6
    lda Bitte melde dich an, um diesen Link zu sehen.
    jmp 1116

    Anmerkung: die Musik wurde zwar vom Nuviemaker korrekt abgespielt und auch in die REU geschrieben, leider kam jedoch am Ende eine defekte Nuvie-Datei heraus (direkter Absturz zu beginn). Da aber die Musik und die Metadaten (insb. die Adresse für das Musikende) korrekt in die REU geschrieben wurde, kann man die Musik mit dem Nuvie-Musikripper extrahieren und mit dem Nuvie-Musikwechsler in ein korrekt funktionierendes Nuvie einfügen.

    Noch schlimmer war es beim zweiten Subtune (lda Bitte melde dich an, um diesen Link zu sehen.), da ist direkt nach Abspielen der Musik und Bestätigen mit o der Nuviemaker abgestürzt. Die Musikdaten wurden zwar bereits korrekt in die REU geschrieben, aber die Metadaten fehlten, sodass der Nuvie-Musikripper meldet, dass keine Musik gefunden wurde. Um dies zu umgehen, muss man die "Musikendeadresse" mit einem Hexeditor in die kaputte Nuvie-Datei reinpatchen, Adresse $0100F4 in der Reihenfolge Low-byte, Mid-byte, High-byte, die Musikendeadresse berechnet man so: dezimal 16777205 - Frameanzahl * 25 -> Ergebnis umrechnen nach hexadezimal, bei 9999 Frames kommt heraus: dezimal 16527230, hexadezimal $FC2F7E, also schreib man in diesem Beispiel im Hexeditor an Adresse $0100F4 den Wert 7E 2F FC und speichert die Datei, dann klappts auch mit dem Extrahieren der Musik mittels Nuvie-Musikripper.

    Wenn ich mal wieder Zeit und Lust zum Programmieren habe, erweitere ich den Nuvie-Musikripper um eine Funktion, die es ermöglicht, auch die Musik aus solchen kaputten Nuvie-Files zu extrahieren (indem das Programm versucht bei fehlenden Metadaten das Musikende anhand der Musikdaten in der Nuvie-Datei zu erkennen - so lange von hinten nach vorne suchen, bis nur noch Nullen kommen).

    **** Bitte melde dich an, um diesen Link zu sehen. **** Bitte melde dich an, um diesen Link zu sehen. **** Bitte melde dich an, um diesen Link zu sehen. **** Bitte melde dich an, um diesen Link zu sehen. ****

  • Das ganze nochmal mit mehr Bildern :

    Bitte melde dich an, um dieses Medienelement zu sehen.

    REU dazu gibts hier:
    Bitte melde dich an, um diesen Link zu sehen.

    ( SlideShow_5e.reu )

  • Ich bin auf eine Idee gekommen, die ich gleich umsetzen musste, nachdem ich mir die Playlist und weitere REU-Inhalte der "Wired"-Slideshow angesehen habe:

    Da bei dieser Slideshow die Bilder in der Playlist direkt hintereinander in der Form "00 00 00 01 00 02 00 03..." angeordnet sind (in der REU anders wie im Playlisteditor des Nuviemakers) und die Anzeigedauer durch speziellen Maschinencode in der REU (statt durch einen Playlistbefehl) realisiert wird, wodurch die Playlist die Aufzählung aller Bilder (nicht nur 507) fassen kann, bin ich auf die Idee gekommen zu probieren, was passiert, wenn man diesen Maschinencode einfach in eine ander Slideshow "umpflanzt" und eine komplette Zufallsplaylist in die REU schreibt. Und siehe da: es funktioniert :)

    Positiver Nebeneffekt: man hat auch das Feature, dass man die Slideshow durch Drücken der Shift-Taste oder Einrasten der Shift-Lock-Taste pausieren kann :)

    Auf diese Weise geht das Mischen sehr schnell (ca. 17 Sekunden), da trotz Mischen aller Bilder nur die Playlist angepasst und der "Wired-Code" geschrieben wird.

    Als "Abfallprodukt" habe ich dann noch eine Variante des Programms erstellt, die eine Normale Playlist (alle Bilder hintereinander, ohne Zufallsmischung) schreibt, sodass einfach nur das "Pausierungsfeature" der "Wired"-Slideshow bei der eigenen Slideshow "nachgerüstet" wird.

    Nachteil an der "Wired"-Variante: die Bildanzeigedauer ist prinzipiell auf 2 Sekunden festgelegt. Es gibt aber einen kleinen Trick, um zumindest 507 zufällige Bilder mit Pausenfunktion und einer größeren Anzeigedauer zu bekommen: man fügt zuerst den Wired-Code hinzu (mit Slideshow_Wired-Code.prg), lädt danch die Slideshow_Zufall_schnell_507_Bilder_3sek_source.prg (siehe ein paar Posts weiter oben) ohne sie zu starten (sollte sie versehentlich starten, sofort abbrechen), geht ins Listing in Zeile 3, ändert den Wert D=37 in D=1 (für 4 Sekunden Anzeigedauer), D=2 (für 6 Sekunden Anzeigedauer) oder einen noch höheren Wert (Anzeigedauer = 2 Sekunden * (D+1)) und startet das Programm. Wenn es fertig ist, hat man eine Slideshow mit Pausenfunktion, der gewünschten Anzeigedauer (Vielfaches von 2 Sekunden) und bis zu 507 zufälligen Bildern.

    Angehängte Dateien:
    Slideshow_Zufall_schnell_alle_Bilder_Wired-Code.prg: mischt alle Bilder der Slideshow zufällig, erstellt eine Playlist mit 2 Sekunden Bildanzeigedauer und rüstet die Pausierungsfunktion nach
    Slideshow_Wired-Code.prg: rüstet nur die Pausierungsfunktion nach und erstellt eine passende Playlist mit 2 Sekunden Bildanzeigedauer
    ...._source: der jeweils zugehörige Quellcode (Basic-Programm)

  • Also ein Tool welches wirklich hilfreich wäre zum nachvertonen wäre ei n-Sid Cutter !

    So, daß man von dem einmal aufgenommenem Sid nachträglich ( Framegenau ) vorn und hinten was wegschneiden kann...

    Mit dem Hexeditor wird man ja verrückt - Alles immer hin und herrechnen Hexadezimal Dezimal und wieder zurück und von der Gesamtlänge abziehen - Das ist kein workflow - da passieren ständig Fehler. ( und die hört man später ! ) ( Oder man hört eben nichts, wenn man sich beim abschneiden um 1 Byte verzählt hat )

    Leider haben halt auch viele an sich gute Sids Passagen, die man nicht unbedingt im nuvie haben will... und das bei der Aufnahme schon exakt zu timen ist schwierig.

  • Versuch der Neuvertonung:

    Bitte melde dich an, um dieses Medienelement zu sehen.


    SlideShow 5f mit neuer Musik

  • toll anzuschauen,... und seitdem bin ich auch über meine REU auf der 1541U2 (vorher nie benutzt) happy :)
    Hatte mir erst Tommes auf dem KölnerTreffen mit deiner Demo gezeigt..

    die vielen schönen Bilder gab es damals auf dem C64 doch nicht,..

    gibt es ein Konvertieren, der "normale" PC Bilder direkt in das "einfach" C64 Format bringt,..

    danke für´s zeigen bisher

    Micha

    gepflegt werden: VC20, VIC20, C16, 116, C/plus4, C64, C64 II, SX64, C128, C= PC20-III, C= LT286-C,... :thumbup: + amigos

  • Ja cool, wenns jemand gefällt,

    ich dachte schon, es besteht kein sonderliches interesse an nuvie Slideshows.

    Ja anschauen muß mann sich die sache unbedingt mit der Ultimate ( oder Chaneleon ) und einem guten Monitor am echten C64. Da kommen die Farben 1000 mal besser. Die Videocaptures vom PC Bildschirm mit WinVice sind halt sehr matt... aber wer lädt sich heutzutage noch einn REU file runter ohne "preview".

    Zum konvertieren gibts den Mufflon Konverter. Ich hatte da mal in diesem Zhread ein Tutorial gemacht :

    Bitte melde dich an, um diesen Link zu sehen.


    vom Workflow her wärs schön, wenn man sich die konvertierten Bilder direkt am C64 anschauen könnte, da sie dort eben ganz anders wirken.

    Bisher gehe ich mit der IDE64, (die ich gleichzeitig mit der U2 auf einer 3 Fach Expansionsportweiche habe ) direkt auf die PC Festplatte und schau mir die Bilder mit diesem Tool an :

    Bitte melde dich an, um diesen Link zu sehen.

    Das geht auch schon recht fix. Noch besser wäre es, wenn man irgenwie eine Batch datei hätte, die das PC Bild konvertiert, und das Ergebnis gleich in den speicher des C64 schicken und die View Routine starten würde... dann müsste man nicht immer zwischen 2 Rechnern hin und her hüpfen. Vielleicht weiss hier jemand, ob das mit netmon geht ?

  • Den Nufli-Viewer kannte ich noch gar nicht!
    Werde ich mir mal sofort runter laden, habe bisher die Bilder einzeln eingeladen und mit SYS 12288 gestartet.

  • EDIT:
    Es geht tatsächlich !!!!
    Also für alle die über ein rr-net verfügen - können sich ihr konvertiertes bild direkt am C64 ansehen !
    Und das geht so :
    Man braucht netmon : Bitte melde dich an, um diesen Link zu sehen.
    man startet lädt netserv am C64 ( und startet mit sys 49152 )
    am PC intalliert man NETMON und packt in den gleichen Ordner die Mufflon2.exe UND ein Bild im .bmp format ( natürlich 320 mal 200 in den Abmessungen )

    Dann schreibt man sich in ein text file z.B. folgendes :


    mufflon2 bild.bmp --itype bmp --otype nufli --solid --src-palette pepto --dest-palette pepto --flibug -o bild.nuf
    netmon -c put bild.nuf 1ffe
    netmon -c g 3000

    und speichert es mit Endung .bat

    So - nun genügt ein Doppelklick auf die .bat Datei und schon wird das Bild konvertiert und anschließend auf den C64 übertragen und gestartet, wo man es sich also gleich ansehen kann, ob die konvertierung gut geworden ist.

    leider hängt er dann erstmal in der anzeigeschleife - muß noch testen, ob ich ihn mit ein bisschen zusatzcode wieder bereit für das nächste Bild machen kann...


    EDIT 2:
    übrigens - der Nufli Viewer ist noch nicht sehr ausgereift - ich empfehle, außer dem viewer nur nuflis im Ordner zu haben, sonst stürzt er ab.
    Ich habs leider noch nie geschafft, meine Ultimate 2 so zu konfigurieren, dass die Bilder direkt von USB Stick über IEC Device geladen werden. Das IEC Device funktioniert einfach nicht. ( vielleicht wegen Jiffydos inkompatibilität ? )
    Was sehr gut ( und schnell ) funktioniert ist die IDE64. ( kann man mit der Ultimat parallel betreiben )

    Einmal editiert, zuletzt von buexe74 (2. Dezember 2016 um 18:13)

  • Ich wandele die Bilder immer unter Linux Mint mit dem Mufflon 2 um.
    Unter Linux hat man den Vorteil, dass es eine GUI mit Vorschau gibt!
    Man sieht auch nach dem Umwandeln das fertige Bild.
    Bitte melde dich an, um diesen Anhang zu sehen.

  • aber nicht am C64 !

    die Mufflon Gui gibts am PC auch ( für Version 1 ) - dort sieht ja im mini Vorschaufenster alles toll aus, weil die Pixel so klein sind.
    ich starte lieber einen Batch konvert Job und schau mir die Ergebnisse dann mit dem NufliViewer am C64 an.

    Oder - wenns am PC sein muß mit View64 in 3 fach Zoom mit der scanline option aktiviert. Das kommt dem Ergebnis auf dem C64 dann noch am nächsten.