Das snes Bildformat

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

Moderator: DarkZero

Antworten
nur ein mensch
Beiträge: 8
Registriert: Di Jul 03, 2007 12:32 am

Das snes Bildformat

Beitrag von 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
Beiträge: 248
Registriert: Sa Mär 11, 2000 1:01 am

Beitrag von 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
Beiträge: 8
Registriert: Di Jul 03, 2007 12:32 am

Beitrag von 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
Beiträge: 248
Registriert: Sa Mär 11, 2000 1:01 am

Beitrag von 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
Beiträge: 8
Registriert: Di Jul 03, 2007 12:32 am

Beitrag von 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
Beiträge: 248
Registriert: Sa Mär 11, 2000 1:01 am

Beitrag von 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
Beiträge: 8
Registriert: Di Jul 03, 2007 12:32 am

Beitrag von 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
Beiträge: 248
Registriert: Sa Mär 11, 2000 1:01 am

Beitrag von 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
Beiträge: 8
Registriert: Di Jul 03, 2007 12:32 am

Beitrag von 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
Beiträge: 248
Registriert: Sa Mär 11, 2000 1:01 am

Beitrag von 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
Beiträge: 8
Registriert: Di Jul 03, 2007 12:32 am

Beitrag von nur ein mensch »

Ja ok... danke erstmal.
Benutzeravatar
RomFreak
Beiträge: 279
Registriert: Di Sep 12, 2000 12:01 am

Beitrag von 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
Beiträge: 81
Registriert: Sa Okt 19, 2002 4:01 pm

Beitrag von 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
Benutzeravatar
ActionMad
Beiträge: 1709
Registriert: Mi Dez 27, 2000 1:01 am

Beitrag von ActionMad »

Mal so gefragt... könnte man kein Programm schreiben der das Hochrechnet?
nur ein mensch
Beiträge: 8
Registriert: Di Jul 03, 2007 12:32 am

Beitrag von nur ein mensch »

@PiCiJi
Cool danke. Dein Tut ist echt klasse!

@RomFreak
Die Seite kenn ich schon ;)
Antworten