Dieses Tutorial beinhaltet die Verwendung von Romis Spritetool, auffindbar unter folgender Webadresse:
http://www.smwcentral.net/download.php? ... type=tools
Zusätzlich gibt es noch einpaar Extras zum Thema Custom Sprite
Was sind Custom Sprites?
Als Custom Sprites bezeichnet man selbst programmierte Sprites, die nicht im Originalen Super Mario World Spiel vorkommen. Seien es Hammer Bros., Shyguy oder die Firebar, alles mögliche lässt sich einfügen.
Wie werden sie in der ROM eingefügt?
Das Einfügen ist wirklich nicht kompliziert!
Nachdem ihr den Spritetool-Ordner entzippt habt, werdet ihr folgende Dateien finden:
xkas.exe ; sprite_tool.exe ; trasm.exe ; cfg_editor ;
mehrere Textdateien und fünf Ordner(sprites, shooter, generator, src, blocks, tilemaps und tutorials)
relevant ist für den Anfang nur die sprite_tool.exe und die Ordner "sprites, shooter und generator".
Als erstes solltest du deinen Hack in den "st140" Ordner rein tun, also der Ordner, wo die vorherig genannten Dateien sich befinden. Führe nun sprite_tool.exe aus - Du wirst nun aufgefordert den Namen deines Hacks(zum Beispiel SMW.smc, die Endung ist wichtig!)rein zuschreiben. Dann sollst du den Namen der "Spriteliste" (z.b. sprites.txt) Das wars!
So werden die Sprites eingefügt...nun nicht ganz, ihr müsst ja noch definieren, welche Sprite ihr haben wollt. In den "wichtigen" Ordnern befinden sich bereits etliche Sprites. Doch wie definiert ihr welche ihr haben wollt? Nun, dafür gibt es die sogenannte "Sprites.txt" Textdatei, die ihr entweder so schon vorfindet(im st140 Ordner!), oder ihr macht sie selbst, was eigentlich sehr einfach ist. Wenn ihr sie öffnet, könnte sie so aussehen:
1A shyguy.cfg
C4 diag_bill.cfg
D2 generic.cfg
Sprich:
XX
Doch was bedeuten diese komischen Zahlen und die Namen? Nun, die Namen des Sprites den ihr haben wollt findet ihr IMMER bei der .cfg Datei im "sprites, generators oder shooters" Ordner. Die Zahl definiert, wie ihr es bei Lunar Magic einfügen sollt, dazu später mehr!
Die Zahl muss aber in dem jeweiligen Bereich liegen in welchem der Sprite ist:
00-BF Sprites-Ordner
C0-CF Shooters-Ordner
D0-DF Generator-Ordner
E0-FF Diese Nummern können nicht verwendet werden!
Und wie in Lunar Magic eingefügt?
in Lunar Magic werden die Custom Sprites manuell eingefügt, mit Hilfe der "Einfg"Taste:
Wenn du diese Taste in Lunar Magic drückst, erscheint dieses Menü:
Oben links gehört die Nummer deines Sprites hin; zum Beispiel:
1A shyguy.cfg(Also 1A)
Die andere, wichtige Zahl wird unten rechts eingegeben, bei der Extra Info; 0 und 1 sind für normale Sprites, also uninteressant, während 2 und 3 für die Custom Sprites sind. Der Unterschied liegt in den sog. Extra Bits, die manchmal erwähnt werden: Code:
;; Uses first extra bit: YES
;; When the first extra bit is clear, the sprite will trigger the regular exit. When it
;; is set, the sprite will trigger the secret exit.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ist dabei die NORMALE Standardeinstellung für Custom Sprites, die 3 ist für den Extrabit! (In dem Fall würde 2 den nomalen und 3 den Secret Exit aktivieren)
Nun solltet ihr auf den ersten Screen in Lunar Magic ein rotes Kreuz sehen, und wenn ihr die Maus drüber hält sollte "An undefined Custom Sprite" stehen. Wenn ja, habt ihr alles richtig gemacht. Um allerdings die Grafiken davon auch in Lunar Magic anzuzeigen, empfehle ich ein anderes Tutorial auf dieser Seite
Extra
Die Extras beinhalten momentan nur einen Tipp! Hilf Shog weitere nützliche Tipps zu finden um so das Tutorial umfangreicher zu machen!
~~Ändern der Tilemap~~
Die Tilemap eines Sprites haben schon viele Hacker genervt, weil so bestimmte Kombinationen nicht möglich sind. Doch nun werde ich es euch verraten, wie man sie ganz einfach verändert!
Ich werde es euch an einem Beispiel Sprite demonstrieren: Dem "Tweeter"Sprite im Spritetool, der automatisch dabei ist
STA $14C8,x ; /
LDA #$D0 ; \ set y speed
STA $AA,x ; /
JSR SUB_HORZ_POS ; get new direction
LDA KILLED_X_SPEED,y ; \ set x speed based on direction
STA $B6,x ; /
INC $18D2 ; increment number consecutive enemies killed
LDA $18D2 ; \
CMP #$08 ; | if consecutive enemies stomped >= 8, reset to 8
BCC NO_RESET2 ; |
LDA #$08 ; |
STA $18D2 ; /
NO_RESET2 JSL $02ACE5 ; give mario points
LDY $18D2 ; \
CPY #$08 ; | if consecutive enemies stomped < 8 ...
BCS NO_SOUND2 ; |
LDA STAR_SOUNDS,y ; | ... play sound effect
STA $1DF9 ; /
NO_SOUND2 RTS ; final return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; sprite graphics routine
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TILEMAP dcb $A3,$A5
SUB_GFX JSR GET_DRAW_INFO ; sets y = OAM offset
LDA $157C,x ; \ $02 = direction
STA $02 ; /
LDA $14 ; \
LSR A ; |
LSR A ; |
LSR A ; |
CLC ; |
ADC $15E9 ; |
AND #$01 ; |
STA $03 ; | $03 = index to frame start (0 or 1)
;STZ $03
PHX ; /
Dieser Code ist ein kleiner Ausschnitt aus dem Sprite, und was hbae ich hervorgehoben? Richtig, die "Tilemap" Daten, also genau das was wir verändern wollen.
Doch woher weiß ich, wie ich das zu verändern habe?
Nun, dafür braucht ihr als erstes einen Texteditor für die obige Datei, die dazu gehörige .cfg (Tweeter.cfg) und auch wichtig, den "Custom Sprite Tweaker", den ihr schon dann erhaltet, wenn ihr ganz normal Spritetool runterlädt
Als erstes werde ich euch verraten, wo dieser Tweater wäre
Er überschreibt den unteren Teil vom Koopa
Oh, aber er würde doch den Koopa überschreiben, und woher weiß ich die Position?
Nun, die Hexzahl verrät es, sie sagt ja "A3 und A5" und wenn ihr im 8x8Editor nachschaut und die Maus beim Koopa hält, was seht ihr dann? "3A3" als Zahl unten links -> also A3. Nun verbracuht der Sprite 4 8x8 Kästchen, sodass es vier Plätze verbraucht; das Kästchen OBEN LINKS wird bestimmt, der Rest kommt automatisch dazu (deswegen kanns nur A3 sein) udn A5 ist der andere "Frame", also ne andere Pose, weil sonst sähe es ja komisch aus, bei nur einer Grafik
Nun fragt ihr euch villeicht, wozu brauche ich den Tweaker? Nun damit bestimmt ihr, auf welcher Spriteseite sich der Sprite befindet: Wenn ihr die cfg vom Tweeter öffnet, würdet ihr eine Ankreuzkästchenoption sehen, wo steht "Use second page of graphics": Wenn ihr es NICHT anklickt, dann benutzt es die "Koopaseite", wenn ihr es anklcikt, dann die Seite, wo z.B. Chucks Körperteile sind.
So das wars eigentlich auch schon