Nuvie

Aus C64-Wiki
Wechseln zu: Navigation, Suche
Baustelle Dieser Artikel befindet sich im Aufbau und ist vorläufig als Entwurf einzustufen.


Ein Nuvie ist eine Art Video, das auf dem C64 mit Hilfe einer 16-MiB-REU abgespielt werden kann. Die Bilderabfolge wird im NUFLI-Format dargestellt, wodurch in der HiRes-Auflösung von 320 x 200 Pixeln alle 16 vom C64 erzeugten Farben deutlich freier verwendet werden können.

Entwickelt wurde sowohl das NUFLI- als auch das Nuvie-Format von dem Demoprogrammierer Crossbow/Crest (CSDb). Der Name Nuvie ist anscheinend ein Schachtelwort aus dem Darstellungsformat NUFLI und dem englischen Wort Movie (Film).

Allgemeines[Bearbeiten]

Zur Darstellung von Nuvies wird eine REU mit 16 MiB benötigt. Da es eine reale REU mit dieser Speichergröße nie gegeben hat, ist man daher auf die Implementation dieser speziellen REU in der 1541 Ultimate, dem Chameleon oder einem Softwareemulator angewiesen.

Die Nuviedatei wird in den REU-Speicher geladen und kann dann mit dem Nuvie-Player, dem Darstellungsprogramm, angeschaut werden. Im Forum-64 wurden bereits viele Nuvie-Demos zum Download veröffentlicht.

Erstmals Verwendung fand das Nuvie-Format in der Demo BluREU (CSDb - Release Nr. 90344 Sprache:englisch) der Gruppe Crest, veröffentlicht auf der Breakpoint 2010. Der Demoname ist offensichtlich eine Anspielung auf das BluRay-Format für Filme. Später erschien ebenfalls von Crest mit BluREU 3D (CSDb - Release Nr. 112326 Sprache:englisch) auf der X'2012 eine stereoskopische Demo im Nuvie-Format.

Nuvies sind technisch gesehen eine Sammlung von NUFLI-Bildern, die per Script in beliebiger Reihenfolge und Länge dargestellt werden können. Somit sind also auch Film- bzw. animierte Sequenzen darstellbar. Möglich wird die schnelle Abfolge der Bilder nur dadurch, dass per DMA (Direct Memory Access) der REU große Datenmengen in sehr kurzer Zeit in das C64-RAM kopiert werden können. Allerdings bleibt nun bei der Darstellung von NUFLI-Bildern nicht mehr genügend Rasterzeit, um gleichzeitig auch Musik auf dem üblichen Weg abspielen zu können. Daher wird Musik in einen Stream konvertiert, der sich von der Ausgangsmusik nicht hörbar unterscheidet. Musik, die digitalisierte Elemente enthält, kann jedoch nicht in einen für Nuvies verwendbaren Stream konvertiert werden.

Anwendungsbereiche[Bearbeiten]

Das Nuvie-Format findet hauptsächlich Verwendung in filmartigen Demos, jedoch gibt es auch erste Experimente, das Format für eine möglichst originalgetreue Konvertierung des animationsstarken Spielhallenklassikers Dragon's Lair zu nutzen.[1]

Nutzung auf Emulatoren[Bearbeiten]

Um ein Nuvie auf WinVICE darzustellen, geht man vor wie folgt:

  1. Einstellungen: Settings → Cartridge/IO Settings → REU → Enable REU → REU Size auf Maximum → Browse → .REU Image anwählen
  2. Software: NuviePlayer (Forum64) starten; enthalten ist der Nuvie-Player bspw. bei der Demo BluREU

Aufbau einer Nuviedatei[Bearbeiten]

Eine REU mit 16 MiB Größe besteht aus 256 Bänken (0-255 bzw $00-$FF) zu je 64 KiB (65536 Byte) Größe. In jeder dieser 256 REU-Bänke können bis zu 3 Bilder sowie 16 Byte Hilfsdaten (s.u.) abgelegt sein. Um die Bilddaten möglichst schnell aus der REU in den C64 kopieren zu können, ist jedes Bild in zwei Teilen in der REU abgelegt. Die 3 Bilder sind wie folgt in der REU gespeichert (am Beispiel von REU-Bank $00):

Speicherbelegung der REU-Bank $00
Bild 000: $000000 - $00004F und $000100 - $0055FF
Bild 001: $000050 - $00009F und $005600 - $00AAFF
Bild 002: $0000A0 - $0000EF und $00AB00 - $00FFFF

Für REU-Bank $01 sieht es so aus:

Bild 003: $010000 - $01004F und $010100 - $0155FF
Bild 004: $010050 - $01009F und $015600 - $01AAFF
Bild 005: $0100A0 - $0100EF und $01AB00 - $01FFFF

Für die folgenden Bänke ist die Speicheraufteilung analog.

Bei den Bilddaten handelt es sich um konvertierte Nufli-Bilder: die Nufli-Bilder werden vom Nuviemaker so konvertiert, dass sie mit dem verfügbaren Speicherplatz auskommen und vom Nuvieplayer schneller abgespielt werden können.

Pro REU-Bank sind die Bytes $xx00F0 bis $xx00FF nicht mit Bilddaten belegt. Diese jeweils 16 Byte enthalten die Hilfsdaten, wie Playereinstellungen, Playlist, Infoscreen etc.

Wenn keine Musik im Nuvie verwendet wird, bietet die REU Platz für 768 Bilder (256 REU-Bänke mit je 3 Bildern).

Wird im Nuvie SID-Musik verwendet, sind die Musikdaten "in aufgenommener Form" (25 Registerwerte des SID-Chip pro Frame) von Speicheradresse $FFFFF4 beginnend "rückwärts" abgelegt, d.h. während des Abspielens wird pro Frame (= 1/50 Sekunde) der Adresszeiger für die Musik um 25 Byte reduziert, bis die Musikendeadresse erreicht ist, dann wird die Musik neu gestartet.

Abhängig von der Länge der aufgenommenen SID-Musik steht für die Bilder weniger Speicherplatz zur Verfügung (ca. 52,4 Sekunden aufgenommene SID-Musik belegen den Speicherplatz für 3 Bilder). Die maximal mögliche Anzahl an Bildern wird vom Nuviemaker angezeigt.


Hilfsdaten

In der REU sind die Hilfsdaten jeweils in den Speicherzellen $xx00F0 bis $xx00FF abgelegt, wobei xx für die REU-Bank ($00-$FF) steht. Folgende Hilfsdaten gibt es in einem Nuvie in den REU-Bänken $xx:

    $00: Header: enthält die Codecversion - diese wird vom Nuvieplayer überprüft,
         fehlen diese Daten oder ist eine falsche Codecversion hinterlegt, gibt der Nuvieplayer eine Fehlermeldung aus
    $01: Metadaten für den Nuvieplayer (genauere Beschreibung s.u.)
$02-$0F: wird bei manchen Nuvies aus der Demoszene für speziellen Programmcode verwendet,
         der den Abspielvorgang beeinflusst (z.B. Nuvie mittels Shift-Taste pausierbar),
         bei Standardnuvies enthält dieser Bereich nur Nullbytes
$10-$8E: Playlist, die Einfluss auf die Abspielreihenfolge, Geschwindigkeit etc. der Bilder nimmt
    $8F: Bytefolge 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF (Nutzen unbekannt)
$90-$CE: Infoscreen (der Text, der zu Beginn eines Nuvies angezeigt wird - optional) 

Metadaten

Die Bytes $0100F0 bis $0100FF enthalten die Metadaten (Informationen für den Nuvieplayer):

   $0100F0: $00=keine Musik, andere Werte: Nuvie enthält Musik, 
            der Nuviemaker schreibt in dieses Byte $E8, wenn die Musik durchlaufen soll
            und $F8, wenn die Musik mit jedem Videodurchlauf neu gestartet werden soll
   $0100F1: "Musiktyp": der Nuviemaker schreibt in dieses Byte $DC, manche Nuvies aus der Demoszene verwenden andere Werte,
            der Wert legt offenbar fest, wie die Musik abgespielt werden soll, ein falscher Wert sorgt für stark fehlerhaften Ton
$0100F2/F3: beeinflusst ebenfalls die Musikwiedergabe, der Nuviemaker speichert dort $FF FF,
            andere Werte sorgen für fehlerhaften Ton
$0100F4-F6: Musikendeadresse im Format Low-Mid-High-Byte: 
            z.B. bedeudet die Bytefolge $05 B6 FD, dass die Musik bei Erreichen der Speicherzelle $FDB605 endet
            bei Erreichen der Musikendeadresse beginnt die Musik wieder von vorn (ab Speicherzelle $FFFFF4 rückwärts)
   $0100F7: legt fest, ob in den REU-Bänken $02-$0F spezieller Programmcode hinterlegt ist ($00 = nein, $FF = ja),
            der Nuviemaker schreibt immer den Wert $00
$0100F8/F9: Rahmenfarben während der Nuviewiedergabe: ist das erste Halbbyte $0-$7 wird die Rahmenfarbe der einzelnen
            Nufli-Bilder verwendet (in der Regel schwarz), ist das erste Halbbyte $8-$F, wird der Rahmen in der Farbe des 
            zweiten Halbbytes eingefärbt, z.B. $1=weiß, $2=rot usw., Byte $0100F8 legt die Farbe des linken und rechten Rahmens
            fest, Byte $0100F9 die Farbe des oberen und unteren Rahmen
   $0100FA: ist das erste Halbbyte $F wird der Infoscreen angezeigt, bei $0 wird kein Infoscreen angezeigt,
            das zweite Halbbyte legt die Zeichenfarbe des Infoscreentexts fest
   $0100FB: das erste Halbbyte legt die Rahmenfarbe, das zweite Halbbyte die Hintergrundfarbe des Infoscreens fest
$0100FC/FD: legt fest, wie lang der Infoscreen angezeigt wird (in Frames, ein Frame = 1/50 Sekunde)
            der Nuvieplayer schreibt in diese Bytes $02 00 = 512 = 10,24 Sekunden,
            trägt man in diese Bytes $00 00 ein, wird der Infoscreen unendlich lang angezeigt und kann nur durch Drücken der
            Leertaste übersprungen werden
   $0100FE: Zeichensatz des Infoscreens: $A7 = klein (Standard), $A5 = groß
   $0100FF: vermutlich unbenutzt (bei allen Nuvies $00, keine Änderung des Abspielverhaltens, wenn man diesen Wert ändert)

Quellen[Bearbeiten]

  1. Experimente zur Konvertierung der animationsstarken Laserdisc-Version von Dragon's Lair für den C64

Weblinks[Bearbeiten]

Nuvie How To[Bearbeiten]

Software zur Erstellung von Nuvies[Bearbeiten]

Auswahl von Nuvies im .reu-Format[Bearbeiten]

Video-Konvertierungen von Forum64 Usern[Bearbeiten]

Nuvies auf Youtube[Bearbeiten]