Paletten-ASM

geschrieben am 06.06.2013 20:10:13
( Link )
Erst einmal denke ich, sollte ich erklären, was ich am Ende haben möchte:
Ich möchte ein Level, welches ein ganz normales Level ist. (mit ExGFX; custom Blöcken; etc.)
Auch mit einer normalen Palette. Sollte sich Mario aber bewegen, soll die komplette Palette schwarz gefärbt werden.
Es wäre auch ok, wenn StatusBar und Mario sichtbar bleiben würden.
Zu diesem Zweck möchte ich etwas Code für LevelASM schreiben.

Wie ich teste ob Mario sich bewegt ist mir klar (ich schaue einfach ob ein Spieler eine Taste drückt, wie da, wo ich die Steuerung vertauscht habe, vielleicht erinnter sich ja jemand daran), aber in Bezug auf die Paletten habe ich keine Ahnung. Ich habe mal bei smwc in der RAM Map unter dem Stichwort "palette" gesucht, aber alle Adressen und Beschreibungen welche ich gefunden habe, sind für mich eher verwirrend / unnütz. Ich hab das Gefühl das geht nicht ganz so einfach, wie ich mir das Vorstelle

Hat jemand eine Idee, wie man die Palettenfarbe ändern lassen kann?
Eine Musterlösung mit Erklärung wäre natürlich ideal, aber ich bin schon froh, wenn mir einer einen Hinweis bezüglich Adressen, oder dem Verhalten der Paletten (deren Eigenschaften) geben könnt.

Danke!
geschrieben am 07.06.2013 0:37:30
( Link )
Ich kann dir keinen Code geben, aber das hier kann helfen:
Zur ExAnimation (aus der LM Hilfedatei):
Zitat
The 0x10 bytes starting at $7FC070 in SNES RAM control the frame values for the 0x10 Manual frame triggers. So for example, if you want all animations using "Manual 4" as a trigger to show their 3rd frame, you'd store a byte value of 2 to $7FC074.

Und das hier noch dazu: http://w4mp3.bplaced.net/SMW/Komplette%20Palette%20per%20ExAnimation%20ver%e4ndern/

Zur Mario Bewegen Sache:
Code
LDA $7B
AND $7D
BNE Dunkel
STZ $7FC07x ; Das hier ändern
BRA Return
Dunkel:
LDA #$01
STA $7FC07x ; Das hier auch ändern, in dasselbe wie oben
Return:
RTL / RTS ; Hier das richtige benutzen

Das sollte in Level/UberASM.
Tutorials: ExAnimation | YouTube: W4mp3 | Twitter: https://twitter.com/SMWW4mp3
geschrieben am 07.06.2013 17:13:22
( Link )
eine kleine frage wie viele farben der palette willst du den ändern alle 256 oder nur eine palette oder was?
WAS, WIE, WO???? Ne, Ne ich bin nicht die Signatur ...
Ich putze hier nur.

Mein Hack:
<!-- m --><a class="postlink" href="http://www.youtube.com/user/conankun88#p/a/u/0/8vdcyGylrg0">http://www.youtube.com/user/conankun88# ... vdcyGylrg0</a><!-- m -->
geschrieben am 07.06.2013 18:47:09
( Link )
Alle, welche in dem Level benutzt werden können.
geschrieben am 07.06.2013 20:39:00
( Link )
also nur damit ich das richtig verstehe du willst das jede farbe der palette schwarz machen...
d.h. du willst das der ganze Bildschirm schwarz ist...
und du meinst die palette zu berarbeiten wäre ne effiziente weise dafür? XD
WAS, WIE, WO???? Ne, Ne ich bin nicht die Signatur ...
Ich putze hier nur.

Mein Hack:
<!-- m --><a class="postlink" href="http://www.youtube.com/user/conankun88#p/a/u/0/8vdcyGylrg0">http://www.youtube.com/user/conankun88# ... vdcyGylrg0</a><!-- m -->
geschrieben am 07.06.2013 20:50:49
( Link )
Jetzt, wo du's sagst... wenn es dir sowieso nichts ausmacht, dass der ganze Bildschirm dunkel wäre, dann kann man das ja auch über die Hellgikeit lösen. Meilenweit einfacher.

Hier, das wäre das dann:

Code
LDA #$0F
STA $0DAE
LDA $7B
ORA $7D
BNE +
STZ $0DAE
+
geschrieben am 07.06.2013 21:36:21
( Link )
Manchmal sieht man den Wald vor lauter Bäumen nicht...
Danke!

W4MP3: Interessantes Tutorial, werde ich sicher mal benutzen, auch wenn es jetzt mit WYEs und Zünnis Lösung schneller geht.
geschrieben am 08.06.2013 6:42:45
( Link )
Dafür aber sieht man die Statusbar und Mario nicht. Wenn man den Bildschirm komplett abdunkelt, dann ist es schwieriger das Level zu machen.
Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->
geschrieben am 08.06.2013 7:54:38
( Link )
Zitat von kooooopa:

Es wäre auch ok, wenn StatusBar und Mario sichtbar bleiben würden.

Heißt, dass es auch anders geht und das Schwarz machen hat ja den Sinn, dass es schwerer wird!

WYE, muss ich an deinem Code noch was ändern? Denn ich habe jetzt:
Code
LDA $15
CMP #%00000000
BEQ KeineEingabe
LDA #$0F
STA $0DAE
LDA $7B
ORA $7D
BNE +
STZ $0DAE
+
RTS
KeineEingabe:
RTS

Mit LevelCode.asm eingefügt und der Bildschirm wird zwar schwarz, aber ich denke eher, dass passiert, weil das Spiel abstürzt.
Er wird schwarz auch wenn ich nichts drücke und auch die Musik ist weg...
geschrieben am 08.06.2013 12:58:13
( Link )
Ich würd das jetzt so machen (musst gucken ob es mit rts/rtl enden muss)
Code
LDA $15
ORA $17
BEQ KeineEingabe
LDA #$80
TSB $0DAE
RTS
KeineEingabe:
LDA #$80
TRB $0DAE
RTS
WAS, WIE, WO???? Ne, Ne ich bin nicht die Signatur ...
Ich putze hier nur.

Mein Hack:
<!-- m --><a class="postlink" href="http://www.youtube.com/user/conankun88#p/a/u/0/8vdcyGylrg0">http://www.youtube.com/user/conankun88# ... vdcyGylrg0</a><!-- m -->
geschrieben am 08.06.2013 14:39:17
( Link )
Klappt und ist mit RTS (hat levelcode doch eigentlich zu 99,99%, oder?)

Was macht eigentlich das TSB?
geschrieben am 08.06.2013 15:19:18
( Link )
Zitat von kooooopa:
Klappt und ist mit RTS (hat levelcode doch eigentlich zu 99,99%, oder?)

Was macht eigentlich das TSB?

TSB bedeutet TestSetBit und hat die Funktion, (Binäre-)Bits manuell zu setzen*. Also:
Code
LDA #$02                  ;LDA #%00000010
STA $19 ;Ist Mario klein, wird er caped, ist Mario groß, wird er Feuer-Mario

Man überschreibt also keine Einsen mit Nullen, wenn die Zahl im Akkumulator eine Null des Bits im Binärsystem hat
Das Gegenstück heißt TRB/TestResetBit
(Frag mich nicht warum es "Test" heißt )

*Im Binärsystem gibt es nur zwei Zahlen, die Null und die Eins. Null ist im Binärsystem clear und Eins ist im Binärsystem set.
Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->