Das snes Bildformat

Hier könnt Ihr Erfahrungen rund ums Thema "ROM-Translation" und "ROM-Hacking" austauschen

Moderator: DarkZero

Post Reply
nur ein mensch
Posts: 8
Joined: Tue Jul 03, 2007 12:32 am

Das snes Bildformat

Post by nur ein mensch »

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.
SinaP
Posts: 248
Joined: Sat Mar 11, 2000 1:01 am

Post by SinaP »

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.
nur ein mensch
Posts: 8
Joined: Tue Jul 03, 2007 12:32 am

Post by nur ein mensch »

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?
SinaP
Posts: 248
Joined: Sat Mar 11, 2000 1:01 am

Post by SinaP »

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.
nur ein mensch
Posts: 8
Joined: Tue Jul 03, 2007 12:32 am

Post by nur ein mensch »

Jedes Bit hat einen Zustand von 0 oder 1, bei 4-Bit wäre das 2x2x2x2 = 16 Zustände bzw. Farben.
Hm also so hab ich am Anfang auch gedacht, weils rechnerisch auch Sinn ergibt.
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ß.
Aus Byte 1 + 2 wird die erste Reiche gemacht. Byte 1 ist die erste+zweite Ebene/Plane, Byte 2 die dritte+vierte Ebene/Plane.
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.
Die 0 Bits in Byte 1 ist die Ebene/Plane 1
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)?
Ist Byte 1 Bit 0 = 0 und Byte 2 Bit 0 = 0 dann ist die Farbe 0=Schwarz
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.
SinaP
Posts: 248
Joined: Sat Mar 11, 2000 1:01 am

Post by SinaP »

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
nur ein mensch
Posts: 8
Joined: Tue Jul 03, 2007 12:32 am

Post by nur ein mensch »

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?
SinaP
Posts: 248
Joined: Sat Mar 11, 2000 1:01 am

Post by SinaP »

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.
nur ein mensch
Posts: 8
Joined: Tue Jul 03, 2007 12:32 am

Post by nur ein mensch »

Ohja shit ich meinte natürlich 16, 17 ... die ersten Bytes aus der zweiten Reihe halt.
Der Paletteneintrag befindet sich ja jetzt woanders im Rom. Wie genau wird der auf das Tile übertragen? Kann man das nur per Code rausfinden?
SinaP
Posts: 248
Joined: Sat Mar 11, 2000 1:01 am

Post by SinaP »

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.
nur ein mensch
Posts: 8
Joined: Tue Jul 03, 2007 12:32 am

Post by nur ein mensch »

Ja ok... danke erstmal.
User avatar
RomFreak
Posts: 279
Joined: Tue Sep 12, 2000 12:01 am
Location: Nähe Heidelberg

Post by RomFreak »

Falls du des Englischen mächtig bist, gibt es hier auch noch weiterführende Infos:
http://www.romhacking.net/?category=4&P ... tle=&desc=
PiCiJi
Posts: 81
Joined: Sat Oct 19, 2002 4:01 pm
Contact:

Post by PiCiJi »

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
User avatar
ActionMad
Posts: 1709
Joined: Wed Dec 27, 2000 1:01 am
Location: Karlsruhe

Post by ActionMad »

Mal so gefragt... könnte man kein Programm schreiben der das Hochrechnet?
nur ein mensch
Posts: 8
Joined: Tue Jul 03, 2007 12:32 am

Post by nur ein mensch »

@PiCiJi
Cool danke. Dein Tut ist echt klasse!

@RomFreak
Die Seite kenn ich schon ;)
Post Reply