Beiträge von LPBass

geschrieben am 22.10.2011 16:23:39 in Das alte HDMA-Archiv
( Link )
Zitat von WYE:
Na ja, levelASM sollte man natürlich trotzdem noch benutzen, nur der Code, der im alten Archiv steht, ist nicht mehr der aktuellste. Er ist zwar nicht falsch und natürlich benutzbar, aber es gibt ein neues Tool, das Farbverläufe aus PNG-Bildern "rippen" kann, und das mit noch etwas effizienterem Code.

Du meinst also den H-DMA Gradient Ripper? Damit habe ich auch schon einen eigenen Farbverlauf gemacht.
geschrieben am 23.10.2011 22:07:45 in Monatlicher Levelwettbewerb - Oktober 2011
( Link )
Alle fertigen Hacks bitte auch an mich senden.
geschrieben am 30.10.2011 22:42:57 in Monatlicher Levelwettbewerb - Oktober 2011
( Link )
Ich ahbe bis jetzt nur die Hacks von majora211, Shog und kooooopa bekommen. Bitte schickt mir auch eure Hacks. Ich Let's Playe sie.
geschrieben am 06.11.2011 20:06:03 in Monatlicher Wettbewerb - November 2011 [Beendet]
( Link )
Trag mich mal in die Jury ein
geschrieben am 10.11.2011 17:54:41 in Monatlicher Levelwettbewerb - Oktober 2011
( Link )
Benvvv muss noch aufgenommen werden, dann werden alle 4 hochgeladen (benvvv hat mir seinen nicht geschickt).
geschrieben am 10.11.2011 20:17:57 in Monatlicher Levelwettbewerb - Oktober 2011
( Link )
habe ich gemacht. mal sehen.. ich werde ihn vllt am wochenende aufnehmen und dann auf jeden fall alle hochladen. Die links werde ich dann hier posten
geschrieben am 10.11.2011 20:34:29 in Ich höre gerade...
( Link )


Epic.
geschrieben am 13.11.2011 15:20:58 in Monatlicher Levelwettbewerb - Oktober 2011
( Link )
Hier die Lets Plays:

Benvvv:

kooooopa:

majora211:

Shog:
geschrieben am 14.11.2011 16:09:20 in Monatlicher Levelwettbewerb - Oktober 2011
( Link )
Zitat von kooooopa:
Hey Lps.
Ich find die LPs wirklich gut, LPBass.

Und mit dem Nachfragen wollt ich dich auf keinen Fall unter druck setzen , nur sichergehen dass du es nicht einfach vergessen hast, wie manch andere es schon getan haben.


Ich hatte zu dem Zeitpunkt nur den Hack von Benvvv nciht da. Also hbe ich noch gewartet^^
geschrieben am 26.11.2011 17:56:14 in Credits
( Link )
DU machst ein Level, wo du am besten auto sroll benutzt und benutzt eine Buchstaben ExGFX. z.B. http://www.smwcentral.net/?p=showexgfx&id=1092

Dann kannste im Level die Musik ändern.
geschrieben am 26.11.2011 18:05:49 in Vanilla-Levelcontest [Closed]
zuletzt bearbeitet von LPBass am 26.11.2011 20:59:59.
( Link )
So liebe Leute!

Ich habe mir vorgenommen einen Levelcontest zu starten.
Das Thema lautet: VANILLA

Zaubert mir irgendwas hin! Solange es Vanilla ist.

Erlaubt sind:
-Gemischte Tilesets
-Map 16 Edits
-Custom Music
-Paletten Edits

Nicht erlaubt sind:
-Custom Blöcke/Sprites
-ExGFX aller Arten (PLayer,Misc,OW,FG,BG,...)
-Kaizo Level

Der Termin zur Abgabe ist am 6.12.2011

Die Hacks werden nur von mir bewertet!

Leveldesign: 5 Punkte
Spielspaß: 5 Punkte
Kreavitität: 5 Punkte
Bonus (Musik,Ideen,etc.): 5 Punkte

Viel Spaß beim Hacken!

Teilnehmer:
-Dominik
geschrieben am 26.11.2011 20:59:17 in Vanilla-Levelcontest [Closed]
( Link )
Zitat von Skorme:
Wenn es bei den monatlichen Wettbewerben schon keine Teilnehmer gibt, dann werden sich hier wohl auch nicht so viele eintragen...
:-/


Hmm.. hast recht. Ich hab mir das nochmal durch den kopf gehen lassen. ich breche das ab.


Tut mir leid Dominik
geschrieben am 09.12.2011 16:09:24 in Monatlicher Wettbewerb - November 2011 [Beendet]
( Link )
@GurkeXtreme ich habe dir die Bewertung gesendet.
geschrieben am 02.02.2012 21:05:31 in Underway's alte Hacks [Sammelthread]
( Link )
Wow. Einfach nur wow.

Ich habe auf meinen Tisch gesabbert.
geschrieben am 06.04.2012 23:37:50 in Allgemeine Hex- und ASM-Fragen
( Link )
Code
HEADER
LOROM

ORG $00D630
JML Main

!Freespace = $1FB000 ;POINT THIS TO SOME FREE SPACE!!!!!! AAAAAAAA

; =======================================
; CODE FOR U-JUMP GOES HERE
; =======================================

!UYspeed = $97 ;Y speed when doing somersault
!UXspeedright = $03 ;X speed when doing somersault to left
!UXspeedleft = $FD ;same except right
!UJumpSFX = $02 ;Jumping SFX
!USFXPanel = $1DF9 ;SFX panel
!UNeededvelocity = $65 ;Minimum required speed to do a U-jump

ORG !Freespace

db "RATS" ;\
dw codeend-codemain-$01 ; |Prepare RATS tag.
dw codeend-codemain-$01^#$FFFF ;/ (Yes, Xkas also accepts #$FFFF)

codemain:
Main: LDA $13E0 ;\
CMP #$0D ; |Essential check.
BNE Widejump ;/ If the animation is not $0D, go check if it is widejump
LDA $13E4 ;\
CMP #!UNeededvelocity ; |Check velocity.
BCC Return ;/ If low, go to normal jumping routine. Else, do next stuff


LDA #!UXspeedright ;Speed to the right
LDY $76
BNE rightstore
LDA #!UXspeedleft ;speed to the left
rightstore: STA $7B

LDA #!UYspeed ;\Set Y-speed
STA $7D ;/

LDA #!UJumpSFX ;\
STA !USFXPanel ;/Jumping sound effect
JSL $01AB9E ;Show "Contact" GFX

DEC $13E4 ;Make sure you cant run full speed after you land.

finish: JML $00D668 ;Finish u-jump routine

; =======================================
; CODE FOR LONGJUMP GOES HERE
; =======================================

!LYspeed = $B7 ;Y speed when doing somersault
!LXspeedright = $4A ;X speed when doing somersault to left
!LXspeedleft = $B5 ;same except right
!LJumpSFX = $08 ;Jumping SFX
!LSFXPanel = $1DFC ;SFX panel
!LNeededvelocity = $65 ;Minimum required speed to do a U-jump

Widejump: LDA $187A ;comment out these 2 instructions
BNE Return ;and you can longjump with yoshi

LDA $73 ;\If not ducking
BEQ Return ;/return

LDA $13E4 ;\
CMP #!LNeededvelocity ; |Make sure you have enough speed
BCC Return ;/

LDA #!LJumpSFX ;\
STA !LSFXPanel ;/Play sound effect

LDA #!LYspeed ;\
STA $7D ;/Set Y Speed

LDA #!LXspeedright ;Speed to the right
LDY $76
BNE rightwide
LDA #!LXspeedleft ;speed to the left
rightwide: STA $7B
JML $00D668 ;Finish widejump routine

; =======================================
; RECOVER ORIGINAL ROUTINE
; =======================================

Return: LDA $7B ;\
BPL go_D637 ; |Handle normal jumping
JML $00D634 ; |
go_D637: JML $00D637 ;/
codeend:


Dies ist ein Patch. Ich möchte diesen als Code in LevelASM einfügen, aber ich weiß nicht, wie das geht. Ich code zwar selbst EINFACHE Blöcke, aber DAS kann ich noch nicht. ich wäre sehr froh, wenn mir einer helfen könnte!

~Bass
geschrieben am 07.04.2012 11:45:23 in Allgemeine Hex- und ASM-Fragen
( Link )
so fortgeschritten bin ich noch nicht. Ich wäre echt froh, wenn mir einer von euch das machen könnte (es sollte bisher nur in level C sein)
Danke im Voraus!
geschrieben am 07.04.2012 11:52:45 in Das GermanSMWTeam
( Link )
Servus Leute!
Vor nicht so langer Zeit wurde ein Youtube Kanal namens GermanSMWTeam gegründet. Dort werden deutsche SMW Tutorials hochgeladen, die euch höchstwahrscheinlich auch helfen.
Der Kanal wird von KingOfOnePiece und PaperZockt geleitet.
Die anderen Mitglieder sind:
MetalJo98
mrdeppelman
TheBassLP (also ich )
Mawwo7 war mal dabei, jetzt ist er raus, weil er kein bock mehr hat.

Link: http://www.youtube.com/germansmwteam

Bei uns dreht sich alles um SMW, trotzdem werden auch mal andere Sachen als nur Tutorials kommen!

Ich hoffe, das ich euch erfolgreich auf den Kanal aufmerkssam gemacht habe und freue mich über jeden Besuch!

~Bass - GST Member
geschrieben am 07.04.2012 12:16:31 in Allgemeine Hex- und ASM-Fragen
( Link )
Zitat von Bladey:
Hallo liebes Forum,
Ich habe (mal wieder) ein Problem.

Und zwar habe ich mir einen Custom Boss runtergeladen.
Funktioniert auch alles super, nur was mich extrem stört: Wenn man im Boss Raum ist, wird ganz Normal die Musik abgespielt, die ich im Raum verwende, aber sobald der Boss Kampf los geht (man muss sich den Boss nähern), spielt er automatisch die Standard Bosskampf Musik ab -__- ..
Nun wollte ich fragen:
Kann ich mit einen Hex-Edit oder anderen Hilfsmitteln die Standard Bosskampf Musik durch eine Custom Bosskampf Musik ersetzen?
Wenn ja, wie?
Oder macht es mehr Sinn den Spritecode zu ändern?


Schick mal den code, ich kanns mir mal ansehen, das problem hatte ich schon beim Balrog boss von Sonikku^^
Falls du aber mit AddmusicM arbeitest, kannst du die musik irgendwie verändern
geschrieben am 07.04.2012 12:33:56 in Allgemeine Hex- und ASM-Fragen
( Link )
EDIT: mist -.- WYE war schneller als ich^^

Zitat von Bladey:
Der ist ebenfalls von Sonikku o.o

Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Frenzied Toroko
; by Sonikku
; Description: She stands where you place her, and when you get close, she
; transforms into her rabid form. She jumps, throws an aimed block at you, lands
; and throws another. She takes
PROJECT = $04 ; custom sprite number of ToroBlk.cfg
HP = $08 ; how many stomps before she faints.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; init JSL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

dcb "INIT"
JSR SUB_HORZ_POS
TYA
STA $157C,x
LDA #$08
STA $1602,x
RTL

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; main sprite JSL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

dcb "MAIN"
PHB ; \
PHK ; | main sprite function, just calls local subroutine
PLB ; |
JSR START_HB_CODE ; |
PLB ; |
RTL ; /

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; main sprite routine
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BLNKFRM dcb $08,$08,$08,$08,$08,$08,$08,$09
TRNSFRM dcb $0B,$0C
IDLEFRM dcb $00,$01,$03,$03
AIRCHAR dcb $04,$06
AIRSHOT dcb $05,$07
XSPD dcb $10,$F0
SPRX dcb $FF,$10
SPRX2 dcb $FF,$00
RETURN RTS
START_HB_CODE
LDA $15AC,x
BEQ NOSTUN
LDA $14
AND #$01
BNE NOGFX
NOSTUN JSR SUB_GFX
NOGFX LDA $9D
BNE RETURN
JSL $01802A
LDA $1594,x
JSL $0086DF
dcw STATE0&$FFFF
dcw STATE1&$FFFF
dcw STATE2&$FFFF
STATE0 LDA $1540,x
BEQ NOTIMR0
CMP #$01
BNE NOINC
LDA #$01
STA $1594,x
LDA #$40
STA $1540,x
LDA #$70
STA $163E,x
RTS
NOINC CMP #$70
BCS FRENZY1
CMP #$40
BCS FRENZY2
LDA #$10
STA $1DF9
LDA #$05
STA $1DFB
LDA $14
LSR A
LSR A
LSR A
AND #$01
TAY
LDA IDLEFRM,y
BRA STRFRM0
FRENZY1 LDA #$0A
BRA STRFRM0
FRENZY2 LDA $14
AND #$01
TAY
LDA TRNSFRM,y
STRFRM0 STA $1602,x
RTS
NOTIMR0 JSR SUB_HORZ_POS
LDA $0F
CLC
ADC #$40
CMP #$80
BCS STAND0
LDA #$90
STA $1540,x
RTS
STAND0 LDA $14
LSR A
LSR A
LSR A
AND #$07
TAY
LDA BLNKFRM,y
STA $1602,x
RETURN0 RTS
STATE1 LDA $15AC,x
BNE NOCON
JSL $01A7DC
BCC NOCON
LDA $7D
CMP #$10
BMI SPRWINS
JSL $01AA33
JSL $01AB99
LDA #$0B
STA $72
LDA #$13
STA $1DF9
STZ $AA,x
INC $C2,x
LDA #HP
CMP $C2,x
BNE NOKILL
LDA #$90
STA $1540,x
INC $1594,x
RTS
NOKILL LDA #$40
STA $15AC,x
RTS
SPRWINS JSL $00F5B7
NOCON JSR SUB_HORZ_POS
TYA
STA $157C,x
LDA $1588,x
AND #$03
BEQ NOWALL
STZ $B6,x
NOWALL LDA $1558,x
BEQ NOLAND
LDA #$02
STA $1602,x
RTS
NOLAND LDA $1540,x
BNE NOTIMR
LDA #$70
STA $1540,x
NOTIMR LDA $1588,x
AND #$04
BEQ INAIR
LDA $163E,x
BEQ RESET
CMP #$10
BCC PREJMP
STZ $B6,x
LDA #$02
STA $1602,x
BRA NOJMP
PREJMP LDA #$02
STA $1602,x
RTS
RESET LDA #$C8
STA $AA,x
JSR SUB_HORZ_POS
TYA
LDA XSPD,y
STA $B6,x
LDA #$FF
STA $163E,x
NOJMP LDA $1510,x
BEQ NOAIR
LDA #$10
STA $1558,x
STZ $B6,x
STZ $1510,x
LDA #$20
STA $1887
LDA #$09
STA $1DFC
LDA #$40
STA $1540,x
BRA NOAIR
INAIR LDA #$01
STA $1510,x
DEC $AA,x
LDA $14
AND #$01
BNE NOAIR
DEC $AA,x
DEC $AA,x
NOAIR LDA $1540,x
CMP #$04
BEQ SHOT
CMP #$06
BCC SHOTIN
CMP #$20
BCS SKIP
LDY $1510,x
LDA AIRCHAR,y
BRA STRFRM
SHOTIN LDY $1510,x
LDA AIRSHOT,y
BRA STRFRM
SKIP LDA $14
LSR A
LSR A
LSR A
AND #$01
TAY
LDA $1510,x
BEQ ONGND
INY
INY
ONGND LDA IDLEFRM,y
STRFRM STA $1602,x
RTS
SHOT LDY $1510,x
LDA AIRSHOT,y
STA $1602,x
JSL $02A9DE
BMI RETURN1
LDA #$01
STA $14C8,y
PHX
LDA #PROJECT
TYX
STA $7FAB9E,x
PLX
LDA $E4,x
CLC
ADC #$08
STA $00E4,y
LDA $14E0,x
ADC #$00
STA $14E0,y
LDA $D8,x
SEC
SBC #$0C
STA $00D8,y
LDA $14D4,x
SBC #$00
STA $14D4,y
PHX
TYX
JSL $07F7D2
JSL $0187A7
LDA #$08
STA $7FAB10,x
PLX
LDA #$50
JSR CODE_01BF6A
LDX $15E9
LDA $00
STA $00AA,y
LDA $01
STA $00B6,y
RETURN1 RTS
STATE2 STZ $B6,x
LDA $1540,x
CMP #$01
BEQ ENDLVL
CMP #$60
BCS GOBACK
CMP #$50
BCS FAINT
LDA #$0E
BRA STRFRM2
FAINT LDA #$0D
BRA STRFRM2
GOBACK LDA $14
AND #$01
TAY
LDA TRNSFRM,y
STRFRM2 STA $1602,x
RTS
ENDLVL LDA #$0B
STA $71
LDA #$05
STA $1DF9
LDA #$FF
STA $1DFB
STA $1493
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; aiming routine
; input: accumulator should be set to total speed (x+y)
; output: $00 = y speed, $01 = x speed
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CODE_01BF6A: STA $01
PHX ;\ preserve sprite indexes of Magikoopa and magic
PHY ;/
JSR SUB_VERT_POS ; $0E = vertical distance to Mario
STY $02 ; $02 = vertical direction to Mario
LDA $0E ;\ $0C = vertical distance to Mario, positive
BPL CODE_01BF7C ; |
EOR #$FF ; |
CLC ; |
ADC #$01 ; |
CODE_01BF7C: STA $0C ;/
JSR SUB_HORZ_POS ; $0F = horizontal distance to Mario
STY $03 ; $03 = horizontal direction to Mario
LDA $0F ;\ $0D = horizontal distance to Mario, positive
BPL CODE_01BF8C ; |
EOR #$FF ; |
CLC ; |
ADC #$01 ; |
CODE_01BF8C: STA $0D ;/
LDY #$00
LDA $0D ;\ if vertical distance less than horizontal distance,
CMP $0C ; |
BCS CODE_01BF9F ;/ branch
INY ; set y register
PHA ;\ switch $0C and $0D
LDA $0C ; |
STA $0D ; |
PLA ; |
STA $0C ;/
CODE_01BF9F: LDA #$00 ;\ zero out $00 and $0B
STA $0B ; | ...what's wrong with STZ?
STA $00 ;/
LDX $01 ;\ divide $0C by $0D?
CODE_01BFA7: LDA $0B ; |\ if $0C + loop counter is less than $0D,
CLC ; | |
ADC $0C ; | |
CMP $0D ; | |
BCC CODE_01BFB4 ; |/ branch
SBC $0D ; | else, subtract $0D
INC $00 ; | and increase $00
CODE_01BFB4: STA $0B ; |
DEX ; |\ if still cycles left to run,
BNE CODE_01BFA7 ;/ / go to start of loop
TYA ;\ if $0C and $0D was not switched,
BEQ CODE_01BFC6 ;/ branch
LDA $00 ;\ else, switch $00 and $01
PHA ; |
LDA $01 ; |
STA $00 ; |
PLA ; |
STA $01 ;/
CODE_01BFC6: LDA $00 ;\ if horizontal distance was inverted,
LDY $02 ; | invert $00
BEQ CODE_01BFD3 ; |
EOR #$FF ; |
CLC ; |
ADC #$01 ; |
STA $00 ;/
CODE_01BFD3: LDA $01 ;\ if vertical distance was inverted,
LDY $03 ; | invert $01
BEQ CODE_01BFE0 ; |
EOR #$FF ; |
CLC ; |
ADC #$01 ; |
STA $01 ;/
CODE_01BFE0: PLY ;\ retrieve Magikoopa and magic sprite indexes
PLX ;/
RTS ; return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; graphics routine
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TILEMAP dcb $00,$02,$20,$22 ; #$00 (idle1)
dcb $04,$06,$24,$26 ; #$01 (idle2)
dcb $08,$0A,$28,$2A ; #$02 (jump)
dcb $0C,$0E,$2C,$2E ; #$03 (inair)
dcb $40,$42,$60,$62 ; #$04 (charge1)
dcb $44,$46,$64,$66 ; #$05 (throw1)
dcb $48,$4A,$68,$6A ; #$06 (charge2)
dcb $4C,$4E,$6C,$6E ; #$07 (throw2)
dcb $AC,$AE,$AC,$AE ; #$08 (stand1)
dcb $CC,$CE,$CC,$CE ; #$09 (stand2)
dcb $A0,$A2,$A0,$A2 ; #$0A (frenzy1)
dcb $80,$82,$80,$82 ; #$0B (frenzy2)
dcb $84,$86,$A4,$A6 ; #$0C (frenzy3)
dcb $A8,$AA,$A8,$AA ; #$0D (lost1)
dcb $88,$8A,$88,$8A ; #$0E (lost2)
X_OFFSET dcb $00,$10,$00,$10
dcb $10,$00,$10,$00
Y_OFFSET dcb $F3,$F3,$03,$03
dcb $F3,$F3,$03,$03
dcb $F3,$F3,$03,$03
dcb $F3,$F3,$03,$03
dcb $F3,$F3,$03,$03
dcb $F3,$F3,$03,$03
dcb $F3,$F3,$03,$03
dcb $F3,$F3,$03,$03

dcb $00,$00,$00,$00
dcb $00,$00,$00,$00
dcb $00,$00,$00,$00
dcb $00,$00,$00,$00
dcb $F0,$F0,$00,$00
dcb $00,$00,$00,$00
dcb $00,$00,$00,$00
BLKTILE dcb $8C,$8E

SUB_GFX JSR GET_DRAW_INFO ; sets y = OAM offset
LDA $157C,x ; \ $02 = direction
ASL A
ASL A
STA $02 ; /

LDA $1602,x
ASL A
ASL A
STA $03

PHX
LDX #$03
LOOP_START PHX
TXA
CLC
ADC $02
TAX
LDA X_OFFSET,x
CLC
ADC $00 ; \ tile x position = sprite y location ($01)
STA $0300,y ; /
PLX

PHX
TXA
CLC
ADC $03
TAX
LDA TILEMAP,x
STA $0302,y
LDA Y_OFFSET,x
CLC
ADC $01 ; \ tile y position = sprite x location ($00)
STA $0301,y ; /
PLX

PHX
LDX $15E9
LDA $15F6,x ; tile properties xyppccct, format
LDX $02 ; \ if direction == 0...
BEQ NO_FLIP ; |
ORA #$40 ; / ...flip tile
NO_FLIP ORA $64 ; add in tile priority of level
STA $0303,y ; store tile properties
PLX
INY ; \ increase index to sprite tile map ($300)...
INY ; | ...we wrote 1 16x16 tile...
INY ; | ...sprite OAM is 8x8...
INY ; / ...so increment 4 times
DEX
BPL LOOP_START

PLX
LDA $15A0,x
ORA $186C,x
BNE NOBLK
LDA $1602,x
CMP #$04
BEQ SHOW_HAMMER_TOO
CMP #$06
BEQ SHOW_HAMMER_TOO
NOBLK LDY #$02 ; \ 460 = 2 (all 16x16 tiles)
LDA #$03 ; | A = (number of tiles drawn - 1)
JSL $01B7B3 ; / don't draw if offscreen
RTS ; return

SHOW_HAMMER_TOO PHX
LDA $157C,x
BNE NO_ADJ
LDA $00
BRA FINISH
NO_ADJ LDA $00
CLC
ADC #$10
FINISH STA $0300,y

LDA $01 ; \ tile y position = sprite y location ($01) + tile displacement
SEC ; |
SBC #$0C
STA $0301,y ; /

LDA $14
AND #$01
TAX
LDA BLKTILE,x ; \ store tile
STA $0302,y ; /

PHX
TYA ; \ get index to sprite property map ($460)...
LSR A ; | ...we use the sprite OAM index...
LSR A ; | ...and divide by 4 because a 16x16 tile is 4 8x8 tiles
TAX ; |
LDA #$02
STA $0460,x ; /
PLX

LDA #$0F
STA $0303,y ; / store tile properties

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

LDY #$FF ; \ 02, because we didn't write to 460 yet
LDA #$04 ; | A = number of tiles drawn - 1
JSL $01B7B3 ; / don't draw if offscreen
RTS ; return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; $B760 - graphics routine helper - shared
; sets off screen flags and sets index to OAM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;org $03B75C

TABLE1 dcb $0C,$1C
TABLE2 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 TABLE1,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 TABLE2,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_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
CLC
ADC #$18
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


Und ich hoffe du findest was.. Ich finde den Code extrem unübersichtlich.


habs gefunden!
Da war irgendwo
LDA #$05
STA $1DFB
das lässt diese musik abspielen. das musst du löschen und dann sollte es gehen

Ich habe das mal für dich gemacht!

Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Balrog 1 and 3
; by Sonikku
; Description: Based off of the first Balrog encounter. He runs around and then
; jumps. If you fail to stomp him but still make contact, he grabs you and then
; throws you. If the extra bit is set, he will launch a few missiles like the
; third Balrog encounter.
HP1 = $07 ; how many stomps before the level is beaten (Extra bit clear).
HP2 = $09 ; how many stomps before the level is beaten (Extra bit set).
PROJECT = $03 ; sprite number of BalrogProjectile.cfg.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; INIT and MAIN JSL targets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

dcb "INIT"
JSR SUB_HORZ_POS
TYA
STA $157C,x
RTL

dcb "MAIN"
PHB
PHK
PLB
JSR SPRITE_ROUTINE
PLB
RTL


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SPRITE_ROUTINE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WALKFRM dcb $04,$00,$05,$00
XMAX dcb $18,$E8
XACCEL dcb $01,$FF
TIMER dcb $40,$20,$70,$B0,$20,$60,$60,$A0
MARSPD dcb $30,$D0
RETURN RTS
SPRITE_ROUTINE
JSR SUB_OFF_SCREEN_X0
JSR SUB_GFX
LDA $9D
BNE RETURN
LDA $C2,x
CMP #$02
BEQ NOCON
LDA $1FE2,x
BNE NOCON
JSL $01A7DC
BCC NOCON
JSR SUB_VERT_POS
LDA $0E
CMP #$E6
BPL SPRITE_WINS
LDA $7D
BMI NOCON
JSL $01AA33
JSL $01AB99
LDA $1564,x
BNE NOSTUN
LDA #$13
STA $1DF9
LDA #$80
STA $1564,x
LDA #$08
STA $1FE2,x
INC $1594,x
LDA $7FAB10,x
AND #$04
BEQ CLEAR
LDA #HP2
BRA SETHP
CLEAR LDA #HP1
SETHP CMP $1594,x
BNE NOCON
LDA #$02
STA $C2,x
LDA #$50
STA $154C,x
STZ $B6,x
STZ $AA,x
BRA NOCON
NOSTUN LDA #$02
STA $1DF9
LDA #$08
STA $154C,x
BRA NOCON
SPRITE_WINS
LDA $154C,x
BNE NOCON
LDA #$B0
STA $154C,x
LDA #$60
STA $1558,x
LDA #$FF
STA $78
JSL $00F5B7
NOCON JSL $01802A
LDA $1588,x
AND #$04
BEQ INAIR
LDA $C2,x
BEQ NOTIMR
LDA $163E,x
BEQ NOTIMR
CMP #$10
BMI STANDG
LDA #$02
STA $1602,x
BRA NOTIMR
STANDG STZ $1602,x
NOTIMR LDA $151C,x
BEQ NOSMSH
STZ $151C,x
LDA #$10
STA $1887
LDA #$09
STA $1DFC
LDA $C2,x
BEQ NOSMSH
LDA #$20
STA $163E,x
BRA NOSMSH
INAIR LDA #$01
STA $151C,x
LDA #$03
STA $1602,x
LDA $7FAB10,x
AND #$04
BEQ NOSMSH
JSR SUB_HORZ_POS
TYA
STA $157C,x
NOSMSH LDA $C2,x
JSL $0086DF
dcw STATE0&$FFFF
dcw STATE1&$FFFF
dcw STATE2&$FFFF
STATE0 STZ $7D
STZ $7B
LDA #$0B
STA $71
LDA $1588,x
AND #$04
BEQ RETURN0
LDA $163E,x
BEQ SETTIMR
CMP #$01
BEQ INCSTT
CMP #$50
BPL STUND0
CMP #$30
BPL STAND0
CMP #$08
BMI STAND0
LDA #$07
BRA STRFRM0
SETTIMR LDA #$60
STA $163E,x
RTS
STUND0 LDA #$02
BRA STRFRM0
STAND0 LDA #$00
BRA STRFRM0
STRFRM0 STA $1602,x
RTS
INCSTT INC $C2,x
STZ $71
LDA #$70
STA $1540,x
RETURN0 RTS
STATE1 LDA $1558,x
BEQ NOGRAB
CMP #$01
BEQ LNCHMAR
CMP #$5D
BPL NOWARP
LDA $E4,x
CLC
ADC #$08
STA $94
LDA $14E0,x
ADC #$00
STA $95
LDA $D8,x
SEC
SBC #$14
STA $96
LDA $14D4,x
SBC #$00
STA $97
NOWARP LDA #$FF
STA $78
LDA #$08
STA $1602,x
LDA #$03
STA $1497
STZ $B6,x
RTS
LNCHMAR LDY $157C,x
LDA MARSPD,y
STA $7B
LDA #$20
STA $1497
NOGRAB LDA $1510,x
BEQ NOGRAB2
LDA #$03
CMP $1602,x
BNE NOGRAB2
DEC $1510,x
LDA #$10
CMP $1510,x
BCC NOGRAB2
LDA $14
AND #$03
BNE NOGRAB2
JSL $02A9DE
BMI NOGRAB2
LDA #$01
STA $14C8,y
PHX
LDA #PROJECT
TYX
STA $7FAB9E,x
PLX
LDA $E4,x
CLC
ADC #$08
STA $00E4,y
LDA $14E0,x
ADC #$00
STA $14E0,y
LDA $D8,x
STA $00D8,y
LDA $14D4,x
STA $14D4,y
PHX
TYX
JSL $07F7D2
JSL $0187A7
LDA #$08
STA $7FAB10,x
PLX
LDA #$02
STA $1594,y
LDA #$20
STA $1540,y
JSL $01ACF9
AND #$01
TAY
STA $C2,y
NOGRAB2 LDA $1588,x
AND #$03
BEQ WALK
STZ $B6,x
WALK LDA $1588,x
AND #$04
BEQ INAIR1
LDA $154C,x
CMP #$01
BEQ JUMP
BPL SET2JMP
LDA $14
AND #$FF
BNE NOJMP
LDA #$10
STA $154C,x
BRA NOJMP
JUMP LDA #$C0
STA $AA,x
LDY $157C,x
LDA XMAX,y
STA $B6,x
LDA $7FAB10,x
AND #$04
BEQ SET2JMP
LDA #$25
STA $1510,x
SET2JMP LDA #$02
STA $1602,x
BRA DECSPD
INAIR1 DEC $AA,x
RTS
NOJMP LDA $1540,x
BEQ STAND
LDA $14
LSR A
LSR A
AND #$03
TAY
LDA WALKFRM,y
STA $1602,x
LDY $157C,x
LDA XMAX,y
CMP $B6,x
BEQ RETURN1
LDA $14
AND #$01
BNE RETURN1
LDA $B6,x
CLC
ADC XACCEL,y
STA $B6,x
RTS
STAND STZ $1602,x
DECSPD LDA $B6,x
BEQ FACEMAR
LDA $B6,x
SEC
SBC XACCEL,y
STA $B6,x
LDA #$10
STA $163E,x
RETURN1 RTS
FACEMAR LDA $163E,x
BNE RETURN1
JSR SUB_HORZ_POS
TYA
STA $157C,x
JSL $01ACF9
AND #$07
TAY
LDA TIMER,y
STA $1540,x
RTS
STATE2 LDA $154C,x
BEQ UP
CMP #$10
BPL DEAD
LDA #$02
STA $1602,x
STZ $B6,x
RTS
DEAD LDA #$06
STA $1602,x
STZ $151C,x
LDA $1588,x
AND #$04
BNE ONGND2
DEC $AA,x
ONGND2 LDA $14
AND #$01
BNE RETURN2
LDA $E4,x
EOR #$02
STA $E4,x
RTS
UP LDA #$A0
STA $AA,x
INC $1594,x
LDA $1594,x
CMP #$30
BNE RETURN2
LDA #$0B
STA $71
LDA #$FF
STA $1493
STA $1DFB
LDA #$05
STA $1DF9
STZ $14C8,x
RETURN2 RTS

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; graphics routine
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TILEMAP dcb $80,$82,$90,$92 ; stand ; $00
dcb $80,$82,$84,$86 ; stand (eyes closed) ; $01
dcb $80,$82,$88,$8A ; charging/land (for jump) ; $02
dcb $A8,$AA,$B8,$BA ; jumping/in air ; $03
dcb $80,$82,$C4,$C6 ; walk 1 ; $04
dcb $80,$82,$E4,$E6 ; walk 2 ; $05
dcb $B0,$B2,$C0,$C2 ; shocked/dead ; $06
dcb $80,$82,$A4,$A6 ; standing (smiling) ; $07
dcb $D8,$DA,$E8,$EA ; facing away from screen ; $08
dcb $8C,$8E,$9C,$9E ; fly 1 ; $09
dcb $BC,$BE,$CC,$CD ; fly 2 ; $0A
dcb $80,$82,$E0,$E2 ; stand (mouth open) ; $0B
X_OFFSET dcb $10,$00,$10,$00 ; $157C,x = #$00
dcb $00,$10,$00,$10 ; $157C,x = #$01
Y_OFFSET dcb $F8,$F8,$00,$00
dcb $F8,$F8,$00,$00
dcb $FA,$FA,$00,$00
dcb $F8,$F8,$00,$00
dcb $F7,$F7,$FF,$FF
dcb $F7,$F7,$FF,$FF
dcb $F8,$F8,$00,$00
dcb $F8,$F8,$00,$00
dcb $F8,$F8,$00,$00
dcb $F8,$F8,$00,$00
dcb $F8,$F8,$00,$00
dcb $F8,$F8,$00,$00

SUB_GFX JSR GET_DRAW_INFO ; sets y = OAM offset
LDA $157C,x ; \ $02 = direction
ASL A
ASL A
STA $02 ; /
LDA $1602,x
ASL A
ASL A
STA $03

PHX
LDX #$03
LOOP_START PHX
TXA
CLC
ADC $02
TAX
LDA X_OFFSET,x
CLC
ADC $00 ; \ tile x position = sprite y location ($01)
STA $0300,y ; /
PLX

PHX
TXA
CLC
ADC $03
TAX
LDA TILEMAP,x
STA $0302,y

LDA Y_OFFSET,x
CLC
ADC $01 ; \ tile y position = sprite x location ($00)
STA $0301,y ; /
PLX

PHX
LDX $15E9
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
PLX
INY ; \ increase index to sprite tile map ($300)...
INY ; | ...we wrote 1 16x16 tile...
INY ; | ...sprite OAM is 8x8...
INY ; / ...so increment 4 times
DEX
BPL LOOP_START

PLX
LDY #$02 ; \ 460 = 2 (all 16x16 tiles)
LDA #$03 ; | 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 $0F ;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


müsste funktionieren
geschrieben am 07.04.2012 12:45:08 in Allgemeine Hex- und ASM-Fragen
( Link )
Zitat von WYE:
Zitat von Bladey:
Code
   LDA #$05
STA $1DFB


Die 05 da ist die Musik, die gespielt wird. Ob es reicht, die Zahl einfach zu der Nummer des Liedes zu ändern, die du haben willst, weiß ich nicht, aber probieren kannst du's ja mal.

Zweite Lösung, die auf jeden Fall funktioniert: Die beiden Zeilen entfernen und die Musik in LM selber einstellen.


Zur ersten Lösung: Das geht nur, wenn er mit AddmusicM arbeitet, weil man da die music aus 1DFB ersetzen kann.
Ich habe das einfach gelöscht.