9 Stimmen

Alpha-Blending von Sprites in Nintendo DS Homebrew

Ich versuche, Alpha-Blend-Sprites und Hintergründe mit devkitPro (einschließlich libnds, libarm, usw.).

Weiß jemand, wie man das macht?

6voto

PypeBros Punkte 2531

Als allgemeine Referenz habe ich einmal geschrieben ein kleiner Blogeintrag über dieses Thema. Grundsätzlich müssen Sie zunächst festlegen, welche Ebene mit welchen anderen Ebenen alpha-blended ist. Afaik,

  • Die Quellebene(n) muss (müssen) über der (den) Zielebene(n) liegen, damit eine Überblendung angezeigt wird.
  • Die Ausgangsebene ist das, was durchscheinend sein wird, die Zielebene(n) ist (sind) das, was durchsichtig sein wird (und ja, ich finde das ziemlich verwirrend).

Für die Sprites, insbesondere Sie haben dann 3 Möglichkeiten, Alpha-Blending zu erreichen, je nachdem, was Sie brauchen und was Sie bereit sind, dafür zu bezahlen:

  • Sie können alle Sprites mit einem Alpha-Blending versehen, indem Sie die Option BLEND_SRC_SPRITE sur REG_BLDCNT[_SUB] ... nicht sehr nützlich.
  • Sie können die Überblendung einiger Sprites selektiv einschalten, indem Sie ATTR0_TYPE_BLENDED . Die Überblendungsebene wird für alle Sprites (und Ebenen) gleich sein
  • Bitmap-Sprites verwenden direkte Farben (unter Umgehung der Paletten), so dass die ATTR2_PALETTE() Feld der GBA-Sprites ist nutzlos und wurde in ATTR2_ALPHA .

4voto

Cristián Romo Punkte 9466

Sprites auf dem DS können mit der Funktion "Alpha-Blending" überlagert werden. Mischsteuerungsregister . TONC liefert die notwendigen Informationen, damit das Überblenden auf dem Hauptbildschirm funktioniert, da die Registerpositionen identisch sind. Die Überblendung von Alphabildern auf dem Nebenbildschirm erfolgt nach demselben Verfahren mit anderen Registern mit einem Offset von 1000h.

Die Register, die Sie sich ansehen werden, sind REG_BLDMOD , REG_COLV et REG_COLY für den Hauptbildschirm und REG_BLDMOD_SUB , REG_COLV_SUB et REG_COLY_SUB für das Teilbild.

Denken Sie auch daran, dass Sie Folgendes tun müssen den Grafikmodus des Sprites ändern um das Überblenden pro Sprite zu aktivieren.

0voto

Es war ein lang Es ist schon eine Weile her, dass ich für den GBA programmiert habe, aber wenn ich mich recht erinnere, unterstützt der DS die meisten (wenn nicht alle) Dinge, die der GBA unterstützt. Diese Link gibt es einen Abschnitt über das Alpha-Blending für GBA (Abschnitt 13.2). Ich weiß nicht, ob es einen DS-spezifischen Weg, es zu tun, aber dies sollte für Sie arbeiten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X