Musik auf Zeit (Feuerblume)

geschrieben am 02.04.2012 19:48:06
( Link )
Ich suche einen Weg, dass wenn Mario Feuermario ist, eine von mir gewählte Musik gespielt wird.
(Vergleichbar mit der P-Switchmusik, oder der Feuerblume aus Mario Galaxy 2)

Das ganze sollte am Ende ungefähr so funktionieren.
Etwas, das andauernd überprüft ob Mario Feuermario ist.
-ist Mario kein Feuermario wird normal weiter geprüft
-ist Mario Feuermario wird die Levelmusik unterbrochen und Musik A (nur als Bsp.) abgespielt. In dieser Zeit wird nicht überprüft ob Mario Feuermario ist. Ist die Musik dann zu Ende kommt wieder die normale Levelmusik und es wird wieder andauernd überprüft, ob Mario Feuermario ist.
geschrieben am 02.04.2012 21:14:52
( Link )
hm möchtest du soetwas als patch oder als level asm?
und welches addmusic benutzt du?
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 02.04.2012 22:35:26
( Link )
Ist mir relativ egal, wobei ich nicht mal weiss, was Level ASM ist.....

AddmusicM benutz ich.
geschrieben am 02.04.2012 23:27:59
( Link )
naja LevelASM ist für jedes level einzelnd... ^^
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 03.04.2012 8:23:43
( Link )
Nö, dann lieber als Patch.
geschrieben am 08.04.2012 20:24:18
( Link )
Ich hab mir jetzt überlegt, da die Feuerblume eh schon wie der Stern funktioniert einfach die Sternmusik der Feuerblume zuzuweisen.
(die kann ich ja dann verändern)
Kann dann zwar keinen Stern mehr in meinem Hack verwenden, aber das sollte verkraftbar sein.

Ich bräuchte jetzt die "Sterndaten" das was bei Stern die Musik auslöst und sagt welche Musik als ASM Code.
Könntet ihr mir sagen wie ich die finde, oder noch besser sie mir sagen???
geschrieben am 08.04.2012 21:10:22
( Link )
Wenn etwas mit Musik zu tun hat, hängt es in der Regel mit $1DFB oder $0DDA zusammen.
-Das quadratische Rad neu erfinden-
Mit das quadratische Rad neu erfinden (englisch Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.

-Slowsort-
Slowsort (von engl. slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf Teile und herrsche) arbeitet.

geschrieben am 14.04.2012 11:10:30
( Link )
Also das hier wäre mal mein Versuch dazu. (original Code von HuFlungDu)

Code

!freeram = $0660 ;set to free RAM
!freeram2 = $0661 ;I use the same freeram as a start as everybody else,
;so your probably going to want to change these.

macro RATS_start(id)
db "STAR"
dw RATS_Endcode-RATS_Startcode
dw RATS_Endcode-RATS_Startcode^#$FFFF
RATS_Startcode:
endmacro

macro RATS_end(id)
RATS_Endcode:
endmacro
lorom ;\ ROM is LoRom
header ;/ and has a header.

org $01C5EC ;\Hijack getfire routine
JSL setram ;|and jump to code
NOP ;/then get rid of one byte because I oerwrite the rest of the command

org $8DC4 ;\ Hijack NMI routine
JSL StatusCode ;| and jump to our code
NOP ;/ also NOP one time.

org $218015 ;| POINT TO FREE SPACE!!!
%RATS_start(0)
StatusCode:
LDA #$02 ;\ Restore previous
STA $420B ;/ hijacked NMI routine.
LDA $19 ;\Check if you have firepower
CMP #$03 ;|
BNE return ;/
DEC !freeram2 ;\decrease the "multiplyer" RAM "allows me to make it take FF*2 frames
LDA !freeram2 ;|and check if it has reached 0 yet
BNE return ;/
LDA !freeram ;\if it has and the first timer isn't zero
BEQ return ;/
LDA #$02 ;\This is the Mulitplier RAM
STA !freeram2 ;/
DEC !freeram ;decrease timer
LDA !freeram ;\check if it's zero yet
BNE return ;/
LDA #$01 ;\make mario big
STA $19 ;/
return:
RTL

setram:
LDA #$20 ;\Restore hijack
STA $149B ;/
LDA #$FF ;\This is the Timer RAM
STA !freeram ;/
RTL
%RATS_end(0)



Das was ich dazu haben will (weiss nicht ob der Code funktioniert)
Code
LDA $0D      ;Nummer der Sternmusik
STA $0DBA ;da Stern denke ich diese Nummer :)



Und das ganze jetzt in einem Code (stimmt aber 100% nicht)
Code
!freeram = $0660		;set to free RAM
!freeram2 = $0661 ;I use the same freeram as a start as everybody else,
;so your probably going to want to change these.

macro RATS_start(id)
db "STAR"
dw RATS_Endcode-RATS_Startcode
dw RATS_Endcode-RATS_Startcode^#$FFFF
RATS_Startcode:
endmacro

macro RATS_end(id)
RATS_Endcode:
endmacro
lorom ;\ ROM is LoRom
header ;/ and has a header.

org $01C5EC ;\Hijack getfire routine
JSL setram ;|and jump to code
NOP ;/then get rid of one byte because I oerwrite the rest of the command

org $8DC4 ;\ Hijack NMI routine
JSL StatusCode ;| and jump to our code
NOP ;/ also NOP one time.

org $218015 ;| POINT TO FREE SPACE!!!
%RATS_start(0)
StatusCode:
LDA #$02 ;\ Restore previous
STA $420B ;/ hijacked NMI routine.
LDA $19 ;\Check if you have firepower
CMP #$03 ;|
LDA $0D ;Nummer der Sternmusik
STA $0DBA ;da Stern denke ich diese Nummer :)
BNE return ;/
DEC !freeram2 ;\decrease the "multiplyer" RAM "allows me to make it take FF*2 frames
LDA !freeram2 ;|and check if it has reached 0 yet
BNE return ;/
LDA !freeram ;\if it has and the first timer isn't zero
BEQ return ;/
LDA #$02 ;\This is the Mulitplier RAM
STA !freeram2 ;/
DEC !freeram ;decrease timer
LDA !freeram ;\check if it's zero yet
BNE return ;/
LDA #$01 ;\make mario big
STA $19 ;/
return:
RTL

setram:
LDA #$20 ;\Restore hijack
STA $149B ;/
LDA #$FF ;\This is the Timer RAM
STA !freeram ;/
RTL
%RATS_end(0)


Habt ihr eine bessere Idee? (eine die Funktioniert XD)
geschrieben am 14.04.2012 11:28:00
( Link )
Wieso schreibst du etwas in $0DBA ?
das ist die ram adresse für Yoshis farbe...
du musst #$0D in $1DFB speichern...
und du musst wenn der timer abgelaufen ist auch wieder die original musick aktiviren...
Und du musst #$0D laden nicht $0D (sonst lädst du ja eine adresse)

WICHTIG: das ganze muss auch eine zeile tiefer du hast so wie du es gemacht hast das if komplett kaputt gemacht
du würdest (#)$0D laden und mit null vergleichen was komplett sinlos ist...

Code
!freeram = $0660      ;set to free RAM
!freeram2 = $0661 ;I use the same freeram as a start as everybody else,
!freeram3 = $0662 ;so your probably going to want to change these.

macro RATS_start(id)
db "STAR"
dw RATS_Endcode-RATS_Startcode
dw RATS_Endcode-RATS_Startcode^#$FFFF
RATS_Startcode:
endmacro

macro RATS_end(id)
RATS_Endcode:
endmacro
lorom ;\ ROM is LoRom
header ;/ and has a header.

org $01C5EC ;\Hijack getfire routine
JSL setram ;|and jump to code
NOP ;/then get rid of one byte because I oerwrite the rest of the command

org $8DC4 ;\ Hijack NMI routine
JSL StatusCode ;| and jump to our code
NOP ;/ also NOP one time.

org $218015 ;| POINT TO FREE SPACE!!!
%RATS_start(0)
StatusCode:
LDA #$02 ;\ Restore previous
STA $420B ;/ hijacked NMI routine.
LDA $19 ;\Check if you have firepower
CMP #$03 ;|
BNE return ;/

LDA #$0D
STA $1DFB

DEC !freeram2 ;\decrease the "multiplyer" RAM "allows me to make it take FF*2 frames
LDA !freeram2 ;|and check if it has reached 0 yet
BNE return ;/
LDA !freeram ;\if it has and the first timer isn't zero
BEQ return ;/
LDA #$02 ;\This is the Mulitplier RAM
STA !freeram2 ;/
DEC !freeram ;decrease timer
LDA !freeram ;\check if it's zero yet
BNE return ;/
LDA #$01 ;\make mario big
STA $19 ;/
LDA !freeram3
STA $1DFB
return:
RTL

setram:
LDA #$20 ;\Restore hijack
STA $149B ;/
LDA #$FF ;\This is the Timer RAM
STA !freeram ;/
LDA $1DFB
STA !freeram3
RTL
%RATS_end(0)


SO geht es glaube ich...
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 -->