Das snes Bildformat
Moderator: DarkZero
-
nur ein mensch
- Beiträge: 8
- Registriert: Di Jul 03, 2007 12:32 am
Das snes Bildformat
Hiho.
Ich bräuchte mal ein paar Tips in Bezug auf das Snes Bildformat. Eigentlich auch mehr aus Interesse. Wie heißt das Format, wie setzt es sich zusammen?
Außerdem wollte ich noch fragen wie man bmp in dieses Format konvertieren kann und was da genau passiert.
Ich bräuchte mal ein paar Tips in Bezug auf das Snes Bildformat. Eigentlich auch mehr aus Interesse. Wie heißt das Format, wie setzt es sich zusammen?
Außerdem wollte ich noch fragen wie man bmp in dieses Format konvertieren kann und was da genau passiert.
Es ist eigendlich kein Format, nur eine Art die Bildinformationen zu Speichern damit die schnell verarbeitet werden können.
Es gibt 1,2,3,4 und 8Bit SNES-Tile formen.
Normalerweise werden die Farbpixel der Reiche nach abgespeichert und dann entsprechend der Breite und Höche angezeigt.
Also Pixel, Pixel,Pixel,Pixel, ...
Das nennt sich Linear, ist genauso wie RAW. Du mußt nur die Breite wissen damit ein Bild dargestellt werden kann.
SNES Tiles und andere Systeme verwenden denn Planar Mode.
Das heißt die Pixel sind immer noch der Reiche nach drin, aber sie werden jetzt nicht mehr als Farbpunkt ausgewertet, sondern als eine Farbebene im Pixel.
Es gibt 1,2,3,4 und 8Bit SNES-Tile formen.
Normalerweise werden die Farbpixel der Reiche nach abgespeichert und dann entsprechend der Breite und Höche angezeigt.
Also Pixel, Pixel,Pixel,Pixel, ...
Das nennt sich Linear, ist genauso wie RAW. Du mußt nur die Breite wissen damit ein Bild dargestellt werden kann.
SNES Tiles und andere Systeme verwenden denn Planar Mode.
Das heißt die Pixel sind immer noch der Reiche nach drin, aber sie werden jetzt nicht mehr als Farbpunkt ausgewertet, sondern als eine Farbebene im Pixel.
-
nur ein mensch
- Beiträge: 8
- Registriert: Di Jul 03, 2007 12:32 am
Danke für die Antwort. ^_-
Ich hoffe, ich interpretier das richtig.
Um bei mir Verwirrung zu vermeiden... und ja ich bin grade etwas verwirrt lol. Also bitte nicht böse sein, wenn ich Stuss rede. So wie ich das kenne, ist ein Tile 32byte groß und eine Pixelreihe 8bit. Das hab ich mir mal angeguckt.
Kannst du mir vielleicht nochmal erklären, was genau mit Bitplane gemeint ist? Man spricht bei 16 Farben ja von 4 Bitplanes... Wieso nennt man das so?
Mir fällts immer schwer, mir vorzustellen, wie mit 4Bit gearbeitet wird. Ich meine, dass die 16 Farben zustande kommen, weil man für eine Pixelreihe 4 verschiedene Bytes zur Verfügung hat.
Mit der Palette ist das ja dann auch wieder ne andere Geschichte...
Wie genau kann ich das mit der Farbebene im Pixel verstehen?
Ich hoffe, ich interpretier das richtig.
Um bei mir Verwirrung zu vermeiden... und ja ich bin grade etwas verwirrt lol. Also bitte nicht böse sein, wenn ich Stuss rede. So wie ich das kenne, ist ein Tile 32byte groß und eine Pixelreihe 8bit. Das hab ich mir mal angeguckt.
Kannst du mir vielleicht nochmal erklären, was genau mit Bitplane gemeint ist? Man spricht bei 16 Farben ja von 4 Bitplanes... Wieso nennt man das so?
Mir fällts immer schwer, mir vorzustellen, wie mit 4Bit gearbeitet wird. Ich meine, dass die 16 Farben zustande kommen, weil man für eine Pixelreihe 4 verschiedene Bytes zur Verfügung hat.
Mit der Palette ist das ja dann auch wieder ne andere Geschichte...
Wie genau kann ich das mit der Farbebene im Pixel verstehen?
1-Byte = 8-Bit
Tiles sind 8 oder 16 Pixel breit, ansonsten sind es keine Planar-Tiles sondern Linear-Tiles. Die können verschieden breit sein.
Jedes Bit hat einen Zustand von 0 oder 1, bei 4-Bit wäre das 2x2x2x2 = 16 Zustände bzw. Farben.
Wieviel Byte Du für ein Tile brauchst kommt auf die Bit-Tiefe, Tile-Breite und Tile-Höche an. 32 Byte sind es nur bei 4-Bit Tiles mit 8x8 Raster.
Der Tile aufbau ist etwas Tricki ... nehmen wir mal 2-Bit Tiles als Beispiel, 4-Bit Tiles sind dann 2 x 2-Bit Tiles :
2-Bit Tiles sind 2x2 = 4 Farben Tiles.
16 Byte Einlesen.
Aus Byte 1 + 2 wird die erste Reiche gemacht. Byte 1 ist die erste+zweite Ebene/Plane, Byte 2 die dritte+vierte Ebene/Plane.
Die 0 Bits in Byte 1 ist die Ebene/Plane 1,
die 1 Bits in Byte 1 ist die Ebene/Plane 2,
die 0 Bits in Byte 2 ist die Ebene/Plane 3,
die 1 Bits in Byte 2 ist die Ebene/Plane 4.
Die Bits werden von 0 bis 7 nummeriert, also fangen wir mit dem 0ten Bit an.
Ist Byte 1 Bit 0 = 0 und Byte 2 Bit 0 = 0 dann ist die Farbe 0=Schwarz.
Ist Byte 1 Bit 0 = 1 und Byte 2 Bit 0 = 0 dann ist die Farbe 1=Blau.
Ist Byte 1 Bit 0 = 0 und Byte 2 Bit 0 = 1 dann ist die Farbe 2=Grün.
Ist Byte 1 Bit 0 = 1 und Byte 2 Bit 0 = 1 dann ist die Farbe 3=Cyan.
Damit hast Du Deinen ersten Farbpunkt.
Mit denn restlichen 1 bis 7 Bits das gleiche und Du hast 8 Farbpunkte für die erste Reiche vom Tile.
---------
Wenn Du jetzt noch eine Palette dazu nimmst dann sind die Zahlen 0,1,2 und 3 nicht mehr die Standart Farbpalette sondern die Referenz auf denn Inhalt der Palette an denn Positionen 0,1,2 und 3.
Tiles sind 8 oder 16 Pixel breit, ansonsten sind es keine Planar-Tiles sondern Linear-Tiles. Die können verschieden breit sein.
Jedes Bit hat einen Zustand von 0 oder 1, bei 4-Bit wäre das 2x2x2x2 = 16 Zustände bzw. Farben.
Wieviel Byte Du für ein Tile brauchst kommt auf die Bit-Tiefe, Tile-Breite und Tile-Höche an. 32 Byte sind es nur bei 4-Bit Tiles mit 8x8 Raster.
Der Tile aufbau ist etwas Tricki ... nehmen wir mal 2-Bit Tiles als Beispiel, 4-Bit Tiles sind dann 2 x 2-Bit Tiles :
2-Bit Tiles sind 2x2 = 4 Farben Tiles.
16 Byte Einlesen.
Aus Byte 1 + 2 wird die erste Reiche gemacht. Byte 1 ist die erste+zweite Ebene/Plane, Byte 2 die dritte+vierte Ebene/Plane.
Die 0 Bits in Byte 1 ist die Ebene/Plane 1,
die 1 Bits in Byte 1 ist die Ebene/Plane 2,
die 0 Bits in Byte 2 ist die Ebene/Plane 3,
die 1 Bits in Byte 2 ist die Ebene/Plane 4.
Die Bits werden von 0 bis 7 nummeriert, also fangen wir mit dem 0ten Bit an.
Ist Byte 1 Bit 0 = 0 und Byte 2 Bit 0 = 0 dann ist die Farbe 0=Schwarz.
Ist Byte 1 Bit 0 = 1 und Byte 2 Bit 0 = 0 dann ist die Farbe 1=Blau.
Ist Byte 1 Bit 0 = 0 und Byte 2 Bit 0 = 1 dann ist die Farbe 2=Grün.
Ist Byte 1 Bit 0 = 1 und Byte 2 Bit 0 = 1 dann ist die Farbe 3=Cyan.
Damit hast Du Deinen ersten Farbpunkt.
Mit denn restlichen 1 bis 7 Bits das gleiche und Du hast 8 Farbpunkte für die erste Reiche vom Tile.
---------
Wenn Du jetzt noch eine Palette dazu nimmst dann sind die Zahlen 0,1,2 und 3 nicht mehr die Standart Farbpalette sondern die Referenz auf denn Inhalt der Palette an denn Positionen 0,1,2 und 3.
-
nur ein mensch
- Beiträge: 8
- Registriert: Di Jul 03, 2007 12:32 am
Hm also so hab ich am Anfang auch gedacht, weils rechnerisch auch Sinn ergibt.Jedes Bit hat einen Zustand von 0 oder 1, bei 4-Bit wäre das 2x2x2x2 = 16 Zustände bzw. Farben.
Aber dann dachte ich, die Zustände der Bits wären für die Anordnung und nicht für die Farbe der Pixel zuständig. Hab ich damals auch ausprobiert, deswegen verwirrt mich das ganze, auch wenn du wohl Recht haben wirst...
Bei 2 Bitplane wie du sagst (also Nes) ist, wie ich das gesehen hab, das erste Byte für grün, das zweite für blau und kommen beide aufeinander, weiß.
Mit dem ersten Satz stimm ich dir zu... aber das würde heißen, dass Byte 1 zwei Farben und Byte 2 die zwei anderen Farben hat? Weil ich dachte vorher halt, wenn die Bits bei beiden alle auf 0 sind=schwarz und bei mindestens 1 ein Pixel in der jeweiligen Farbe. Ansonsten hab ich wohl immernoch nicht kapiert, als was ich die Ebene betrachten soll.Aus Byte 1 + 2 wird die erste Reiche gemacht. Byte 1 ist die erste+zweite Ebene/Plane, Byte 2 die dritte+vierte Ebene/Plane.
Du meinst aber nicht, dass alle 8 bits von dem Byte gleichzeitig auf 0 bzw 1 sind oder?.... Haben Bit 0 in Byte 1 und 2 nicht denselben Effeckt (nichts)?Die 0 Bits in Byte 1 ist die Ebene/Plane 1
Achso, ging das erste Beispiel auch nur um das 0te Bit? Achja, jetzt seh ich auch, das es genauso ist, wie ich dachte. Nur das mit den Planes ist mir irgedwie noch unklar. Wenn dann hätt ich gedacht, dass es nur 2 Ebenen gibt.Ist Byte 1 Bit 0 = 0 und Byte 2 Bit 0 = 0 dann ist die Farbe 0=Schwarz
Es sind ja auch 2 Ebenen/Planes ... mit 2 Werten a Ebenen/Plane, 0 und 1, damit kann man 2x2 = 4 Farben darstellen
NES ist wieder anders aufgebaut, auch mit Ebenen/Planes.
SNES 2-Bit:
0 bis 15 sind die Bytes und die 2 Spalten sind die Bytes für die Ebenen/Planes.
Reiche 1 : 0 1
Reiche 2 : 2 3
Reiche 3 : 4 5
Reiche 4 : 6 7
Reiche 5 : 8 9
Reiche 6 : 10 11
Reiche 7 : 12 13
Reiche 8 : 14 15
NES 2-Bit:
0 bis 15 sind die Bytes und die 2 Spalten sind die Bytes für die Ebenen/Planes.
Reiche 1 : 0 8
Reiche 2 : 1 9
Reiche 3 : 2 10
Reiche 4 : 3 11
Reiche 5 : 4 12
Reiche 6 : 5 13
Reiche 7 : 6 14
Reiche 8 : 7 15
NES ist wieder anders aufgebaut, auch mit Ebenen/Planes.
SNES 2-Bit:
0 bis 15 sind die Bytes und die 2 Spalten sind die Bytes für die Ebenen/Planes.
Reiche 1 : 0 1
Reiche 2 : 2 3
Reiche 3 : 4 5
Reiche 4 : 6 7
Reiche 5 : 8 9
Reiche 6 : 10 11
Reiche 7 : 12 13
Reiche 8 : 14 15
NES 2-Bit:
0 bis 15 sind die Bytes und die 2 Spalten sind die Bytes für die Ebenen/Planes.
Reiche 1 : 0 8
Reiche 2 : 1 9
Reiche 3 : 2 10
Reiche 4 : 3 11
Reiche 5 : 4 12
Reiche 6 : 5 13
Reiche 7 : 6 14
Reiche 8 : 7 15
-
nur ein mensch
- Beiträge: 8
- Registriert: Di Jul 03, 2007 12:32 am
Gut ich seh schon... nicht die 4Bytes (bei 4bit Ebene) sondern deren Bits werden betrachtet. Die Ebene entspricht also doch jedem Byte das wir haben.
War irgendwie ganz woanders aber um überhaupt einen an zu haben, muss mindestens 1 Bit gesetzt sein.
Bei 4Bit ist die erste Reihe dann so oder: Reihe 1 : 0 1 8 9 ?
Wie wird die Palette dann auf das Tile übertragen und kann man die planaren Tiles irgendwie in Raw umwandeln?
War irgendwie ganz woanders aber um überhaupt einen an zu haben, muss mindestens 1 Bit gesetzt sein.
Bei 4Bit ist die erste Reihe dann so oder: Reihe 1 : 0 1 8 9 ?
Wie wird die Palette dann auf das Tile übertragen und kann man die planaren Tiles irgendwie in Raw umwandeln?
Bei 4-Bit sieht es dann so aus wie ich es geschrieben habe : 2 x 2-Bit SNES = 4-Bit SNES 
Also so:
Reiche 1 : 0 1 16 17
Reiche 2 : 2 3 18 19
Reiche 3 : 4 5 20 21
Reiche 4 : 6 7 22 23
Reiche 5 : 8 9 24 25
Reiche 6 : 10 11 26 27
Reiche 7 : 12 13 28 29
Reiche 8 : 14 15 30 31
Es wird immer Standart-System-Farb-Palette.
Wenn Du eine andere Palette benutzt dann dann mußt Du die Nummer die bei denn Bits rauskommt auf die Palette legen und die Farbe die dort drin ist nehmen.
zB.:
Es kommt 3 bei denn Bits raus, was die Farbe Cyan wäre.
Du mußt jetzt denn Paletteneintrag Nr 3 nehmen. Dort kann irgendeine andere Farbnummer stehen, oder die selbe.
Also so:
Reiche 1 : 0 1 16 17
Reiche 2 : 2 3 18 19
Reiche 3 : 4 5 20 21
Reiche 4 : 6 7 22 23
Reiche 5 : 8 9 24 25
Reiche 6 : 10 11 26 27
Reiche 7 : 12 13 28 29
Reiche 8 : 14 15 30 31
Es wird immer Standart-System-Farb-Palette.
Wenn Du eine andere Palette benutzt dann dann mußt Du die Nummer die bei denn Bits rauskommt auf die Palette legen und die Farbe die dort drin ist nehmen.
zB.:
Es kommt 3 bei denn Bits raus, was die Farbe Cyan wäre.
Du mußt jetzt denn Paletteneintrag Nr 3 nehmen. Dort kann irgendeine andere Farbnummer stehen, oder die selbe.
-
nur ein mensch
- Beiträge: 8
- Registriert: Di Jul 03, 2007 12:32 am
Bei zB 4-Bit sind es 16 Werte für die ersten 16 Farben der Standartpalette.
Das sind die Werte 0..15.
Wenn Du jetzt eine Palette hast dann sind das die Einträge 0..15 in der Palette.
Da kann wegen mir in Palette0 50 stehen, in Palette1 100, in Palette2 150, ...
... denn rest machst Du jetzt aber selber.
Das sind die Werte 0..15.
Wenn Du jetzt eine Palette hast dann sind das die Einträge 0..15 in der Palette.
Da kann wegen mir in Palette0 50 stehen, in Palette1 100, in Palette2 150, ...
... denn rest machst Du jetzt aber selber.
Falls du des Englischen mächtig bist, gibt es hier auch noch weiterführende Infos:
http://www.romhacking.net/?category=4&P ... tle=&desc=
http://www.romhacking.net/?category=4&P ... tle=&desc=
Ich hatte vor nem halben Jahr mein erstes Tutorial über die Snes Grafikeinhait und andere Teile des snes geschrieben. Gegenwärtig arbeite ich wieder an der Dokumentation und meinem snes emulator. Also wenn du Interesse hast schau mal rein. Die Doku enthält noch keine Infos über sprites und Mode 7, jedoch Eigenheiten wie Hires, Pseudo hires und offset per Tile Mode
http://piciji.pi.funpic.de/glossar_ppu.html
http://piciji.pi.funpic.de/glossar_ppu.html
-
nur ein mensch
- Beiträge: 8
- Registriert: Di Jul 03, 2007 12:32 am
