Sprites GB
aus RHWiki, der freien Romhacking-Enzyklopädie
| Inhaltsverzeichnis |
Allgemeines
Auf dem GB und GBC können bis zu 40 Sprites gleichzeitig angezeigt werden. Dies kommt von der Größe des OAM (engl. Object Attribute Memory, etwa: Speicher für Objekteigenschaften), der von 0xFE00 bis 0xFE9F reicht. Damit umfasst der OAM 0xA0 (160 dezimal) Bytes. Ein Sprite im GB verbraucht im OAM 4 Bytes, also sind 160 / 4 = 40 Sprites möglich.
Diese vier Bytes bestehen aus Y-Position, X-Position, Tilenummer (aus 0x8000 - 0x8FFF) und Eigenschaften.
Das Byte für die Eigenschaften besteht aus folgenden Bits:
Bit 7: Priorität (0=Sprite über BG; 1=Sprite unter BG Farben 1-3) Bit 6: Y Flip (0=Normal; 1=Vertikal gespiegelt) Bit 5: X Flip (0=Normal; 1=Horizontal gespiegelt) Bit 4: Palette (0=Spritepalette 0; 1=Spritepalette 1) -> Nicht beim GBC Bit 3: VRAM-Bank des Tiles (0=Bank 0; 1=Bank 1) -> Nur GBC Bit 2-0: Palette (Spritepaletten 0-7) -> Nur GBC
Eine weitere Hardwarebeschränkung ist, dass es höchstens 10 Sprites pro Scanline geben darf. Sind es einmal mehr, so werden die Sprites mit der niedrigsten Priorität nicht angezeigt. Die Priorität (nicht zu verwechseln mit dem Prioritätsbit des Eigenschaftsbyte) wird über die Reihenfolge der Sprites im OAM festgelegt, das erste Sprite im OAM hat also eine höhere Priorität als das zweite usw.
Diese Regelung trifft nur auf den GBC zu, beim GB ist es etwas anders: Dort wird die Priorität zunächst nach der X-Koordinate festgelegt. Haben zwei Sprites dieselben X-Koordinaten, wird wie beim GBC verfahren.
Größe
Beim Gameboy können Sprites zwei verschiedene Größen haben: 8x8 Pixel und 8x16 Pixel. Die Größe kann über das Register 0xFF40 (LCDC, LCD Control) eingestellt werden. Hier ist das Bit 2 (0=8x8; 1=8x16) für die Größe der Sprites verantwortlich.
Farben
Ein Sprite kann beim GB/C nur 3 Farben besitzen, da eine Palette aus nur 4 Farben besteht und eine davon für die Transparenz verwendet wird. Wäre dies nicht der Fall, müssten alle Sprites eckig sein.
Nun sind 3 Farben aber ziemlich wenig, insbesondere beim Gameboy Color. Wenn man hier mehr Farben erreichen will, kann man ein zweites Sprite mit einer anderen Palette über das erste legen. Darüber kann natürlich noch ein Sprite gelegt werden, und über das wieder eins, doch sollte man nicht die 40-Sprite-Grenze des OAM vergessen.

