Allgemeine SMW Hacking Fragen

geschrieben am 13.02.2011 19:51:18
( Link )
Keine Ahnung worans liegen könnte, vllt ist es ja so wie bei den originalen SMW Generatoren, dass du den ganz weit oben plazieren musst (bei den SMW-Generatoren steht da dann immer "may glitch" wenn der zu weit unten ist)

Edit: Ich hab selber ne Frage: Wie änder ich die Music vom Title screen? Wollte jetz keinen Doppelpost machen...
Also: Ich hab auf SMWcentral in der Rom map nachgeguckt. Da stand "$0096C4 (0x018C4) is music Bank Used for the Title Screen. 0E = Overworld Music, 48 = Level Music, 59 = Ending Music." Also hab ich das in Translhextion von 01 auf 48 geändert, weil meine Musik unter Level gespeichert ist.
Dann stand da: "$0096C7 (0x018C7) is the title screen (level C7) music." Das hab ich auf 23 geändert, weil da meine Musik gespeichert ist. Jetz kommt gar keine Musik mehr. Nurnoch sounds ich verstehs nicht... Ich dachte Hex-editing wäre einfach xD deswegen hab ichs jetz hier gepostet... scheint ja falsch zu sein xD
I'm a Brony and I'm proud!



Hier gibt's nette 8bit Remixes, Klavierzeugs und Acapella: <!-- m --><a class="postlink" href="http://www.youtube.com/user/timmifutzelchen">http://www.youtube.com/user/timmifutzelchen</a><!-- m -->
geschrieben am 16.02.2011 13:53:02
( Link )
@TheTim ne daran lags nicht ( hab das Problem noch immer nicht beheben können , aber ist erstmal egal)
Habe jetzt mal ne kleine Frage.
Und zwar folgendes wenn sich meine Rom im meinem Custom Music Ordner befindet ,und ich sie dann öffne werden die Musictitel in Lunar Magic angezeigt.
Aber wenn ich meine Rom im Hauptordner habe dann wird die Music nicht mehr in Lunar Magic angezeigt.
Jetzt ist die Frage welche Datei von Romi's Addmusic ist dafür verantwortlich , das die Musicnamen in Lunar Magic hinter den Nummern stehen.
Wäre das nicht irgendwie möglich das ich die Datei zum Hauptordner kopiere und so werden permanent die Musicnamen angezeigt?
Sry ich hab das ganze wohl etwas kompliziert beschrieben , aber ich hoffe mal das jmd ne Lösung hat.
geschrieben am 16.02.2011 14:31:18
( Link )
das würde ich auch gerne wissen
geschrieben am 16.02.2011 15:26:28
( Link )
Zitat von MarcelLp:
@TheTim ne daran lags nicht ( hab das Problem noch immer nicht beheben können , aber ist erstmal egal)
Habe jetzt mal ne kleine Frage.
Und zwar folgendes wenn sich meine Rom im meinem Custom Music Ordner befindet ,und ich sie dann öffne werden die Musictitel in Lunar Magic angezeigt.
Aber wenn ich meine Rom im Hauptordner habe dann wird die Music nicht mehr in Lunar Magic angezeigt.
Jetzt ist die Frage welche Datei von Romi's Addmusic ist dafür verantwortlich , das die Musicnamen in Lunar Magic hinter den Nummern stehen.
Wäre das nicht irgendwie möglich das ich die Datei zum Hauptordner kopiere und so werden permanent die Musicnamen angezeigt?
Sry ich hab das ganze wohl etwas kompliziert beschrieben , aber ich hoffe mal das jmd ne Lösung hat.


So also du müsstest in deinem Addmusic Ordner eine Datei mit dem Name: Romname.msc, das icon der Datei sieht bei Windows aus wie so ein Fenster und ein roter Koffer. Die kopierst du in deinem Hauptordner und schon werden die namen angezeigt Aber du musst jedesmal wenn du neue Musik einfügst die Datei wieder kopieren.
How many People can read Hex, if only you and DEAD can read it?

Answer anzeigen
DEAE
geschrieben am 16.02.2011 15:52:59
( Link )
Ich hab eine Frage zum Sprite Tool (hab zu lange nicht mehr damit gearbeitet xD)
Bei einer Sprite "Bute" dann hab ich noch eine sprite "ButeArrow" also ist die datei "ButeArrow" nur der Pfeil von der Sprite.
Die frage ist wie ich "ButeArrow" einfügen muss damit die Sprite "Bute" dann die Pfeile schiesst

Random Musiktitel:Branchez - Shake
geschrieben am 16.02.2011 16:37:01
( Link )
Du fügst ButeArrow ganz normal wie Bute ein bloß die Nummer die du für ButeArrow benutzt musst du wahrscheinlich bei Bute einfügen in die .asm datei. Dann funktioniert es
How many People can read Hex, if only you and DEAD can read it?

Answer anzeigen
DEAE
geschrieben am 16.02.2011 16:50:52
( Link )
Zitat von gurkeXtreme:
Ich hab eine Frage zum Sprite Tool (hab zu lange nicht mehr damit gearbeitet xD)
Bei einer Sprite "Bute" dann hab ich noch eine sprite "ButeArrow" also ist die datei "ButeArrow" nur der Pfeil von der Sprite.
Die frage ist wie ich "ButeArrow" einfügen muss damit die Sprite "Bute" dann die Pfeile schiesst

wenn bute z.b. als nummer 2 eingefügt wurde musst du butearrow als 3 einfügen. und bei LM beides übereinander platzieren(so mach ich das)
geschrieben am 16.02.2011 20:04:08
( Link )
Zitat von wertzedu:
Zitat von gurkeXtreme:
Ich hab eine Frage zum Sprite Tool (hab zu lange nicht mehr damit gearbeitet xD)
Bei einer Sprite "Bute" dann hab ich noch eine sprite "ButeArrow" also ist die datei "ButeArrow" nur der Pfeil von der Sprite.
Die frage ist wie ich "ButeArrow" einfügen muss damit die Sprite "Bute" dann die Pfeile schiesst

wenn bute z.b. als nummer 2 eingefügt wurde musst du butearrow als 3 einfügen. und bei LM beides übereinander platzieren(so mach ich das)

Also das ich den bute hinsetze und eins oben den butearrow?

Random Musiktitel:Branchez - Shake
geschrieben am 16.02.2011 22:02:40
( Link )
Zitat von gurkeXtreme:
Zitat von wertzedu:
Zitat von gurkeXtreme:
Ich hab eine Frage zum Sprite Tool (hab zu lange nicht mehr damit gearbeitet xD)
Bei einer Sprite "Bute" dann hab ich noch eine sprite "ButeArrow" also ist die datei "ButeArrow" nur der Pfeil von der Sprite.
Die frage ist wie ich "ButeArrow" einfügen muss damit die Sprite "Bute" dann die Pfeile schiesst

wenn bute z.b. als nummer 2 eingefügt wurde musst du butearrow als 3 einfügen. und bei LM beides übereinander platzieren(so mach ich das)

Also das ich den bute hinsetze und eins oben den butearrow?


Ich weißt nicht wie das bei dem butearrow ist, aber im Normalfall brauchst du das nichtmal plazieren.
Beim Einfügen einfach die Spritenummer des "Zusatz-Sprites" um eines höher als der Normale Sprite.

Dann in LM den Normalen Sprite einfügen (alles wie gewohnt) und er macht den Zusatzsprite (butearrow) automatisch.


Beispiele für Sprite einfügen

03 bute
04 butearrow

oder

09 bute
0A butearrow


usw.

geschrieben am 16.02.2011 22:29:34
( Link )
hatte ich schonmal mit ner anderen sprite (purple critter + purple critter projectile) probiert
hatte nicht funktioniert

Random Musiktitel:Branchez - Shake
geschrieben am 17.02.2011 16:59:07
( Link )
Hast du die Zahl vom CritterProjectile in die .asm Datei von Critter eingefügt? Bei mir funktioniert das
How many People can read Hex, if only you and DEAD can read it?

Answer anzeigen
DEAE
geschrieben am 17.02.2011 17:09:19
( Link )
Wo muss ich das in der .asm einfügen?
ich hab keine ahnung wo

Random Musiktitel:Branchez - Shake
geschrieben am 17.02.2011 18:55:00
( Link )
Poste mal den Inhalt der Datei, sonst können wir dir das schlecht sagen =S

geschrieben am 17.02.2011 22:39:51
( Link )
Hi,
ich mal wieder.^^' Ist es möglich, den Auto Scroll (Medium in dem Fall, sollte aber egal sein) mitten im Level anzuhalten? Natürlich ohne dass in den nächsten Screens nichts mehr kommt versteht sich. Turn off Generators funktioniert ja leider nicht, bzw. hat's zumindest nicht bei mir. Nach Möglichkeit auch so, dass man weiter laufen kann, in beide Richtungen. Kann man danach auch noch einen Auto Scroll (Fast) schalten? Das sähe dann so aus:
Auto Scroll Medium -> Pause -> Auto Scroll Fast. Meinetwegen kann es auch Auto Scroll M -> Auto Scroll F sein, nur das geht ja auch nicht. Daher: Ist das überhaupt möglich? Brauch ich einen speziellen Generator bzw. einen Patch?

lg/
Quartos
geschrieben am 18.02.2011 20:08:37
( Link )
Wie kann ich eine Kanone in ein Level einfügen?
Finde die nirgends Also eine die auch schießt
geschrieben am 18.02.2011 20:26:49
( Link )
als kanone nimm einfach da snormale bullet bill teil. damit die kanone allerdings schießt, brauchst du den bullet bill generator. den findest du bei den sprites unter generators and special commands. diesen sprite( bzw generator) einfach auf die kanone setzten. fertig =)
geschrieben am 18.02.2011 20:59:00
( Link )
Hey, mal ne Frage zur Overworld.

Wie kann ich eine kleine Overworld mit der großen Mainoverworld verbinden?
So dass Mario bei der kleinen OW rechts raus läuft und bei der großen dann von links rein kommt.

Hab einfach mal rote Wege hingebaut, dann geht Mario auch raus, aber der Bildschirm bleibt bei der kleinen OW.
Wenn man dort dann auf die "ins Level gehen" Taste drückt kommt immer Level 000.
geschrieben am 18.02.2011 21:47:57
( Link )
Ich glaube du musst diese brücke mit dem roten weg drauf hinmachen
dann soltest du einstellen können in welche ow mario reingehen soll und bei der nächsten
dann wieder rauskommen soll

Random Musiktitel:Branchez - Shake
geschrieben am 18.02.2011 21:53:03
( Link )
Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Archer Bute
; by Sonikku
; Description: Stands where you place it and shoots arrows. If Mario is above
; this sprite, it uses different frames and aims a bit higher. Like the flying
; Bute, if killed it falls to the ground and disappears in a cloud of smoke.
PROJECT = $03 ; custom sprite number of ButeArrow.cfg
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; INIT and MAIN JSL targets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

dcb "INIT"
JSR SUB_HORZ_POS
TYA
STA $157C,x
LDA #$B0
STA $1540,x
RTL

dcb "MAIN"
PHB
PHK
PLB
JSR SPRITE_ROUTINE
PLB
RTL


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SPRITE_ROUTINE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SPRITE_ROUTINE JSR SUB_GFX
JSR SUB_OFF_SCREEN_X0
LDA $C2,x
JSL $0086DF
dcw STATE0&$FFFF
dcw STATE1&$FFFF
STATE0 LDA $9D

BNE RETURN
JSL $01802A
JSR SUB_VERT_POS
LDA $14C8,x

CMP #$08

BNE DEAD
JSL $018032
JSL $01A7DC
LDA $1528,x
BEQ NOFIRE
LDA #$01
JSL $02ACE5
DEAD INC $C2,x
LDA #$D0
STA $AA,x
RETURN RTS
NOFIRE LDA $1540,x
CMP #$80
BCS NOFRM
CMP #$10
BEQ SHOT
BMI WAIT
CMP #$18
BCC RETURN
BRA CHARGE
CHKBEL LDA $D8,x
SEC
SBC $96
STA $0F
LDA $14D4,x
SBC $97
BMI NOPROX
BNE NOPROX
LDA $0F
CMP #$20
NOPROX RTS
SHOTFRM dcb $01,$02,$04,$05
CHARGE JSR SUB_HORZ_POS
TYA
STA $157C,x
LDA #$70
CMP $1540,x
BCC CHARGIN
INC $1570,x
CHARGIN LDA $1570,x
LSR A
AND #$01
TAY
JSR CHKBEL
BCC ABO1
INY
INY
ABO1 LDA SHOTFRM,y
STA $1602,x
RTS
NOFRM STZ $1602,x
RTS
SHOT JSR GENSPRITE
RTS
WAIT CMP #$01
BCC RESET
JSR CHKBEL
BCC ABO2
LDA #$06
BRA STORE
ABO2 LDA #$03
STORE STA $1602,x
RTS
RESET LDA #$B0
STA $1540,x
RTS
KILLDSPD dcb $08,$F8
KILLDFRM dcb $08,$09
STATE1 LDA $9D

BNE RETURN1
JSL $01802A
LDA $1588,x
AND #$08
BEQ NOCEIL
STZ $AA,x
NOCEIL LDA #$18
STA $1686,x
LDA #$A1
STA $167A,x
LDA $167A,x
ORA #$04
STA $167A,x
LDA #$08
STA $14C8,x
STA $154C,x
STA $1FE2,x
STZ $1528,X
LDA $1588,x
AND #$04
BEQ INAIR
STZ $AA,x
STZ $B6,x
LDA $1570,x
LSR A
LSR A
AND #$01
TAY
LDA KILLDFRM,y
STA $1602,x
INC $1594,x
LDA $1594,x
CMP #$20
BCC RETURN1
INC $1570,x
LDA $1570,x
CMP #$50
BCC RETURN1
LDA #$04
STA $14C8,x
LDA #$1F
STA $1540,x
JSL $07FC3B
LDA #$08
STA $1DF9
RTS
INAIR LDY $157C,x
LDA KILLDSPD,y
STA $B6,x
LDA #$07
STA $1602,x
RETURN1 RTS
GENSPRITE
LDA $15A0,x
ORA $186C,x
BNE RTNSPWN
JSL $02A9DE
BMI RTNSPWN
LDA #$01
STA $14C8,y
PHX
LDA #PROJECT
TYX
STA $7FAB9E,x
PLX
LDA $E4,x
STA $00E4,y
LDA $14E0,x
STA $14E0,y
LDA $D8,x
SEC
SBC #$03
STA $00D8,y
LDA $14D4,x
SBC #$00
STA $14D4,y
PHX
TYX
JSL $07F7D2
JSL $0187A7
LDA #$08
STA $7FAB10,x
PLX
LDA $157C,x
STA $157C,y
JSR CHKBEL
BCC ABO3
LDA #$E0
BRA STRSPD
ABO3 LDA #$00
STRSPD STA $00AA,y
STA $1594,y
LDA #$30
STA $1540,y
RTNSPWN RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; GRAPHICS ROUTINE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TILEMAP dcb $8A,$8C,$8E,$A8,$AA,$AC,$AE,$84,$86,$88
SUB_GFX JSR GET_DRAW_INFO ; sets y = OAM offset
LDA $1602,x
STA $03 ; | $03 = index to frame start (0 or 1)
LDA $157C,x ; $02 = sprite direction
STA $02
PHX ; /
LDA $00 ; \ tile x position = sprite x location ($00)
STA $0300,y ; /

LDA $01 ; \ tile y position = sprite y location ($01)
STA $0301,y ; /

LDA $15F6,x ; tile properties xyppccct, format
LDX $02 ; \ if direction == 0...
BNE NO_FLIP ; |
ORA #$40 ; / ...flip tile
NO_FLIP ORA $64 ; add in tile priority of level
STA $0303,y ; store tile properties

LDX $03 ; \ store tile
LDA TILEMAP,x ; |
STA $0302,y ; /

INY ; \ increase index to sprite tile map ($300)...
INY ; | ...we wrote 1 16x16 tile...
INY ; | ...sprite OAM is 8x8...
INY ; / ...so increment 4 times

PLX ; pull, X = sprite index
LDY #$02 ; \ 460 = 2 (all 16x16 tiles)
LDA #$00 ; | A = (number of tiles drawn - 1)
JSL $01B7B3 ; / don't draw if offscreen
RTS ; return



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ROUTINES FROM THE LIBRARY ARE PASTED BELOW
; You should never have to modify this code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; GET_DRAW_INFO
; This is a helper for the graphics routine. It sets off screen flags, and sets up
; variables. It will return with the following:
;
; Y = index to sprite OAM ($300)
; $00 = sprite x position relative to screen boarder
; $01 = sprite y position relative to screen boarder
;
; It is adapted from the subroutine at $03B760
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SPR_T1 dcb $0C,$1C
SPR_T2 dcb $01,$02

GET_DRAW_INFO STZ $186C,x ; reset sprite offscreen flag, vertical
STZ $15A0,x ; reset sprite offscreen flag, horizontal
LDA $E4,x ; \
CMP $1A ; | set horizontal offscreen if necessary
LDA $14E0,x ; |
SBC $1B ; |
BEQ ON_SCREEN_X ; |
INC $15A0,x ; /

ON_SCREEN_X LDA $14E0,x ; \
XBA ; |
LDA $E4,x ; |
REP #$20 ; |
SEC ; |
SBC $1A ; | mark sprite invalid if far enough off screen
CLC ; |
ADC.W #$0040 ; |
CMP.W #$0180 ; |
SEP #$20 ; |
ROL A ; |
AND #$01 ; |
STA $15C4,x ; /
BNE INVALID ;

LDY #$00 ; \ set up loop:
LDA $1662,x ; |
AND #$20 ; | if not smushed (1662 & 0x20), go through loop twice
BEQ ON_SCREEN_LOOP ; | else, go through loop once
INY ; /
ON_SCREEN_LOOP LDA $D8,x ; \
CLC ; | set vertical offscreen if necessary
ADC SPR_T1,y ; |
PHP ; |
CMP $1C ; | (vert screen boundry)
ROL $00 ; |
PLP ; |
LDA $14D4,x ; |
ADC #$00 ; |
LSR $00 ; |
SBC $1D ; |
BEQ ON_SCREEN_Y ; |
LDA $186C,x ; | (vert offscreen)
ORA SPR_T2,y ; |
STA $186C,x ; |
ON_SCREEN_Y DEY ; |
BPL ON_SCREEN_LOOP ; /

LDY $15EA,x ; get offset to sprite OAM
LDA $E4,x ; \
SEC ; |
SBC $1A ; | $00 = sprite x position relative to screen boarder
STA $00 ; /
LDA $D8,x ; \
SEC ; |
SBC $1C ; | $01 = sprite y position relative to screen boarder
STA $01 ; /
RTS ; return

INVALID PLA ; \ return from *main gfx routine* subroutine...
PLA ; | ...(not just this subroutine)
RTS ; /


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SUB_OFF_SCREEN
; This subroutine deals with sprites that have moved off screen
; It is adapted from the subroutine at $01AC0D
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SPR_T12 dcb $40,$B0
SPR_T13 dcb $01,$FF
SPR_T14 dcb $30,$C0,$A0,$C0,$A0,$F0,$60,$90 ;bank 1 sizes
dcb $30,$C0,$A0,$80,$A0,$40,$60,$B0 ;bank 3 sizes
SPR_T15 dcb $01,$FF,$01,$FF,$01,$FF,$01,$FF ;bank 1 sizes
dcb $01,$FF,$01,$FF,$01,$00,$01,$FF ;bank 3 sizes

SUB_OFF_SCREEN_X1 LDA #$02 ; \ entry point of routine determines value of $03
BRA STORE_03 ; | (table entry to use on horizontal levels)
SUB_OFF_SCREEN_X2 LDA #$04 ; |
BRA STORE_03 ; |
SUB_OFF_SCREEN_X3 LDA #$06 ; |
BRA STORE_03 ; |
SUB_OFF_SCREEN_X4 LDA #$08 ; |
BRA STORE_03 ; |
SUB_OFF_SCREEN_X5 LDA #$0A ; |
BRA STORE_03 ; |
SUB_OFF_SCREEN_X6 LDA #$0C ; |
BRA STORE_03 ; |
SUB_OFF_SCREEN_X7 LDA #$0E ; |
STORE_03 STA $03 ; |
BRA START_SUB ; |
SUB_OFF_SCREEN_X0 STZ $03 ; /

START_SUB JSR SUB_IS_OFF_SCREEN ; \ if sprite is not off screen, return
BEQ RETURN_35 ; /
LDA $5B ; \ goto VERTICAL_LEVEL if vertical level
AND #$01 ; |
BNE VERTICAL_LEVEL ; /
LDA $D8,x ; \
CLC ; |
ADC #$50 ; | if the sprite has gone off the bottom of the level...
LDA $14D4,x ; | (if adding 0x50 to the sprite y position would make the high byte >= 2)
ADC #$00 ; |
CMP #$02 ; |
BPL ERASE_SPRITE ; / ...erase the sprite
LDA $167A,x ; \ if "process offscreen" flag is set, return
AND #$04 ; |
BNE RETURN_35 ; /
LDA $13 ;A:8A00 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdiZcHC:0756 VC:176 00 FL:205
AND #$01 ;A:8A01 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizcHC:0780 VC:176 00 FL:205
ORA $03 ;A:8A01 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizcHC:0796 VC:176 00 FL:205
STA $01 ;A:8A01 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizcHC:0820 VC:176 00 FL:205
TAY ;A:8A01 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizcHC:0844 VC:176 00 FL:205
LDA $1A ;A:8A01 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizcHC:0858 VC:176 00 FL:205
CLC ;A:8A00 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdiZcHC:0882 VC:176 00 FL:205
ADC SPR_T14,y ;A:8A00 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdiZcHC:0896 VC:176 00 FL:205
ROL $00 ;A:8AC0 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:eNvMXdizcHC:0928 VC:176 00 FL:205
CMP $E4,x ;A:8AC0 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:eNvMXdizCHC:0966 VC:176 00 FL:205
PHP ;A:8AC0 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizCHC:0996 VC:176 00 FL:205
LDA $1B ;A:8AC0 X:0009 Y:0001 D:0000 DB:01 S:01F0 P:envMXdizCHC:1018 VC:176 00 FL:205
LSR $00 ;A:8A00 X:0009 Y:0001 D:0000 DB:01 S:01F0 P:envMXdiZCHC:1042 VC:176 00 FL:205
ADC SPR_T15,y ;A:8A00 X:0009 Y:0001 D:0000 DB:01 S:01F0 P:envMXdizcHC:1080 VC:176 00 FL:205
PLP ;A:8AFF X:0009 Y:0001 D:0000 DB:01 S:01F0 P:eNvMXdizcHC:1112 VC:176 00 FL:205
SBC $14E0,x ;A:8AFF X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizCHC:1140 VC:176 00 FL:205
STA $00 ;A:8AFF X:0009 Y:0001 D:0000 DB:01 S:01F1 P:eNvMXdizCHC:1172 VC:176 00 FL:205
LSR $01 ;A:8AFF X:0009 Y:0001 D:0000 DB:01 S:01F1 P:eNvMXdizCHC:1196 VC:176 00 FL:205
BCC SPR_L31 ;A:8AFF X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdiZCHC:1234 VC:176 00 FL:205
EOR #$80 ;A:8AFF X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdiZCHC:1250 VC:176 00 FL:205
STA $00 ;A:8A7F X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizCHC:1266 VC:176 00 FL:205
SPR_L31 LDA $00 ;A:8A7F X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizCHC:1290 VC:176 00 FL:205
BPL RETURN_35 ;A:8A7F X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizCHC:1314 VC:176 00 FL:205
ERASE_SPRITE LDA $14C8,x ; \ if sprite status < 8, permanently erase sprite
CMP #$08 ; |
BCC KILL_SPRITE ; /
LDY $161A,x ;A:FF08 X:0007 Y:0001 D:0000 DB:01 S:01F3 P:envMXdiZCHC:1108 VC:059 00 FL:2878
CPY #$FF ;A:FF08 X:0007 Y:0000 D:0000 DB:01 S:01F3 P:envMXdiZCHC:1140 VC:059 00 FL:2878
BEQ KILL_SPRITE ;A:FF08 X:0007 Y:0000 D:0000 DB:01 S:01F3 P:envMXdizcHC:1156 VC:059 00 FL:2878
LDA #$00 ;A:FF08 X:0007 Y:0000 D:0000 DB:01 S:01F3 P:envMXdizcHC:1172 VC:059 00 FL:2878
STA $1938,y ;A:FF00 X:0007 Y:0000 D:0000 DB:01 S:01F3 P:envMXdiZcHC:1188 VC:059 00 FL:2878
KILL_SPRITE STZ $14C8,x ; erase sprite
RETURN_35 RTS ; return

VERTICAL_LEVEL LDA $167A,x ; \ if "process offscreen" flag is set, return
AND #$04 ; |
BNE RETURN_35 ; /
LDA $13 ; \
LSR A ; |
BCS RETURN_35 ; /
LDA $E4,x ; \
CMP #$00 ; | if the sprite has gone off the side of the level...
LDA $14E0,x ; |
SBC #$00 ; |
CMP #$02 ; |
BCS ERASE_SPRITE ; / ...erase the sprite
LDA $13 ;A:0000 X:0009 Y:00E4 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:1218 VC:250 00 FL:5379
LSR A ;A:0016 X:0009 Y:00E4 D:0000 DB:01 S:01F3 P:envMXdizcHC:1242 VC:250 00 FL:5379
AND #$01 ;A:000B X:0009 Y:00E4 D:0000 DB:01 S:01F3 P:envMXdizcHC:1256 VC:250 00 FL:5379
STA $01 ;A:0001 X:0009 Y:00E4 D:0000 DB:01 S:01F3 P:envMXdizcHC:1272 VC:250 00 FL:5379
TAY ;A:0001 X:0009 Y:00E4 D:0000 DB:01 S:01F3 P:envMXdizcHC:1296 VC:250 00 FL:5379
LDA $1C ;A:001A X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:0052 VC:251 00 FL:5379
CLC ;A:00BD X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:0076 VC:251 00 FL:5379
ADC SPR_T12,y ;A:00BD X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:0090 VC:251 00 FL:5379
ROL $00 ;A:006D X:0009 Y:0001 D:0000 DB:01 S:01F3 P:enVMXdizCHC:0122 VC:251 00 FL:5379
CMP $D8,x ;A:006D X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNVMXdizcHC:0160 VC:251 00 FL:5379
PHP ;A:006D X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNVMXdizcHC:0190 VC:251 00 FL:5379
LDA.W $001D ;A:006D X:0009 Y:0001 D:0000 DB:01 S:01F2 P:eNVMXdizcHC:0212 VC:251 00 FL:5379
LSR $00 ;A:0000 X:0009 Y:0001 D:0000 DB:01 S:01F2 P:enVMXdiZcHC:0244 VC:251 00 FL:5379
ADC SPR_T13,y ;A:0000 X:0009 Y:0001 D:0000 DB:01 S:01F2 P:enVMXdizCHC:0282 VC:251 00 FL:5379
PLP ;A:0000 X:0009 Y:0001 D:0000 DB:01 S:01F2 P:envMXdiZCHC:0314 VC:251 00 FL:5379
SBC $14D4,x ;A:0000 X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNVMXdizcHC:0342 VC:251 00 FL:5379
STA $00 ;A:00FF X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:0374 VC:251 00 FL:5379
LDY $01 ;A:00FF X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:0398 VC:251 00 FL:5379
BEQ SPR_L38 ;A:00FF X:0009 Y:0001 D:0000 DB:01 S:01F3 P:envMXdizcHC:0422 VC:251 00 FL:5379
EOR #$80 ;A:00FF X:0009 Y:0001 D:0000 DB:01 S:01F3 P:envMXdizcHC:0438 VC:251 00 FL:5379
STA $00 ;A:007F X:0009 Y:0001 D:0000 DB:01 S:01F3 P:envMXdizcHC:0454 VC:251 00 FL:5379
SPR_L38 LDA $00 ;A:007F X:0009 Y:0001 D:0000 DB:01 S:01F3 P:envMXdizcHC:0478 VC:251 00 FL:5379
BPL RETURN_35 ;A:007F X:0009 Y:0001 D:0000 DB:01 S:01F3 P:envMXdizcHC:0502 VC:251 00 FL:5379
BMI ERASE_SPRITE ;A:8AFF X:0002 Y:0000 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:0704 VC:184 00 FL:5490

SUB_IS_OFF_SCREEN LDA $15A0,x ; \ if sprite is on screen, accumulator = 0
ORA $186C,x ; |
RTS ; / return


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SUB_HORZ_POS
; This routine determines which side of the sprite Mario is on. It sets the Y register
; to the direction such that the sprite would face Mario
; It is ripped from $03B817
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SUB_HORZ_POS LDY #$00 ;A:25D0 X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizCHC:1020 VC:097 00 FL:31642
LDA $94 ;A:25D0 X:0006 Y:0000 D:0000 DB:03 S:01ED P:envMXdiZCHC:1036 VC:097 00 FL:31642
SEC ;A:25F0 X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizCHC:1060 VC:097 00 FL:31642
SBC $E4,x ;A:25F0 X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizCHC:1074 VC:097 00 FL:31642
STA $0F ;A:25F4 X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizcHC:1104 VC:097 00 FL:31642
LDA $95 ;A:25F4 X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizcHC:1128 VC:097 00 FL:31642
SBC $14E0,x ;A:2500 X:0006 Y:0000 D:0000 DB:03 S:01ED P:envMXdiZcHC:1152 VC:097 00 FL:31642
BPL SPR_L16 ;A:25FF X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizcHC:1184 VC:097 00 FL:31642
INY ;A:25FF X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizcHC:1200 VC:097 00 FL:31642
SPR_L16 RTS ;A:25FF X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizcHC:1214 VC:097 00 FL:31642

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SUB_VERT_POS
; This routine determines if Mario is above or below the sprite. It sets the Y register
; to the direction such that the sprite would face Mario
; It is ripped from $03B829
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SUB_VERT_POS LDY #$00 ;A:25A1 X:0007 Y:0001 D:0000 DB:03 S:01EA P:envMXdizCHC:0130 VC:085 00 FL:924
LDA $96 ;A:25A1 X:0007 Y:0000 D:0000 DB:03 S:01EA P:envMXdiZCHC:0146 VC:085 00 FL:924
SEC ;A:2546 X:0007 Y:0000 D:0000 DB:03 S:01EA P:envMXdizCHC:0170 VC:085 00 FL:924
SBC $D8,x ;A:2546 X:0007 Y:0000 D:0000 DB:03 S:01EA P:envMXdizCHC:0184 VC:085 00 FL:924
STA $0E ;A:25D6 X:0007 Y:0000 D:0000 DB:03 S:01EA P:eNvMXdizcHC:0214 VC:085 00 FL:924
LDA $97 ;A:25D6 X:0007 Y:0000 D:0000 DB:03 S:01EA P:eNvMXdizcHC:0238 VC:085 00 FL:924
SBC $14D4,x ;A:2501 X:0007 Y:0000 D:0000 DB:03 S:01EA P:envMXdizcHC:0262 VC:085 00 FL:924
BPL SPR_L11 ;A:25FF X:0007 Y:0000 D:0000 DB:03 S:01EA P:eNvMXdizcHC:0294 VC:085 00 FL:924
INY ;A:25FF X:0007 Y:0000 D:0000 DB:03 S:01EA P:eNvMXdizcHC:0310 VC:085 00 FL:924
SPR_L11 RTS ;A:25FF X:0007 Y:0001 D:0000 DB:03 S:01EA P:envMXdizcHC:0324 VC:085 00 FL:924

Hier ist der Code vom Bute
Ich dachte man muss bei jeder Sprite die gleiche stelle suchen wo man den code einfügen muss
das wäre sonst recht unpraktisch weil ich sonst von jeder sprite den code hier posten muss

Random Musiktitel:Branchez - Shake
geschrieben am 18.02.2011 22:00:29
( Link )
Code
PROJECT      = $03 ; custom sprite number of ButeArrow.cfg