Allgemeine Hex- und ASM-Fragen

geschrieben am 20.10.2010 17:58:08
zuletzt bearbeitet von Chagan am 14.09.2013 11:26:07.
( Link )
Wie der Titel schon sagt, könnt ihr hier Fragen zu fortgeschritten
Hex- und ASM- Themen stellen

Und ich fang direkt an :

Und zwar hab ich das Problem, dass ich nicht weiß, wie man patches programmiert.
Blöcke kann ich schon, aber ich möchte, dass die eigenschaften, die ich in die .asm geschrieben hab, für dieses Level gilt. Als primitives Beispiel, wenn Mario im Wasser ist, soll Musik 04 gespielt werden, und wenn er klettert, Musik 03, wenn er nichts von beiden macht, 01. Das würde ich als Block so schreiben:

Code

JMP Mario : JMP Mario : JMP Mario : JMP Return : JMP Return : JMP Return : JMP Return

Mario:
LDA $75
BEQ ImWasser ;Wenn Mario im Wasser ist soll zur unterroutine gesprungen werden
LDA $74
BEQ Klettern ;Wenn Mario klettert soll zur unterroutine gesprungen werden
LDA #$01
STA $1DFB ;Wenn er nichts von beiden sachen macht soll Musik 01 gespielt werden
RTL

ImWasser:
LDA #$04
STA $1DFB ;Wenn Mario im Wasser ist soll Musik 04 gespielt werden
RTL

Klettern:
LDA #$03
STA $1DFB ;Wenn Mario klettert soll musik 03 gespielt werden
RTL

Return:
RTL


Nun wie erstelle ich den Patch oder en generator, dass das hier nur in diesem Level passiert, wenn ich diesen ins Level einfüge?

------------------------------

Und eines noch:

Wenn ich meinen Test-Block (ein anderer) berühre, soll er eine Nachricht anzeigen.
Das macht er auch. Aber wenn ich die Nachricht schließe wird der nächste Frame angezeigt und
der Code wird erneut ausgeführt. Gibt es eine Möglichkeit, dass der Code beim berühren erst wartet, bis
mario den Bode berührt hat oderso, also irgentwie den Block im Level lässt, ohne ihn zu löschen?
Mfg Chagan/Danforce.
geschrieben am 20.10.2010 19:52:16
( Link )
1. Benutze levelASM. Trage in levelcode.asm unter dem entsprechenden Label den Code ein. Ohne JMPs natürlich, und RTL durch RTS ersetzen.

2. Etwas schwieriger, hab keine Zeit, es zu erklären.
geschrieben am 20.10.2010 21:21:54
( Link )
Hey, benutze bei Problem 2 folgendes:
als erstes suchst du schönes Freeram in der RAM AdressenDingens(XD)
Hier ist ein Beispiel:
Code
$7E:1F3B	1 byte	Empty	Empty. Cleared during reset and titlescreen load.


Nun setzt du am Anfang des Blockes ein BEQ Command auf, der sagt wenn 0=Block funzt, wenn über 0/also 1 Return...

NACH dem richtigen Code und vor dem RTL machst du ein INC $1F3B, damit der Code nur einmal ausgeführt wird...

Sorry hab nicht viel Zeit aber da smüsste es ungefähr erklären
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...
geschrieben am 21.10.2010 12:06:30
( Link )
Ein Beispiel wäre sicher nicht schlecht, Shog
Mfg Chagan/Danforce.
geschrieben am 21.10.2010 18:07:46
( Link )
Ich hab eine Frage zu HEX,nämlich möcht ich die Creditmusik verändern (ich benutz Romis Addmusic)
und habe bei SMWC folgendes gefunden (in der ROM Map):

1E600 $03:E400 6,624 bytes Music Credit music SPC data.

Leider habe ich keine Ahnung was eine SPC-Data istund wenn ich trotzdem einfach probier die Musiknummer anzugeben,dann crasht das Spiel nachdem man Bowser besiegt hat...
Notiz an mich:

ERST runterschlucken,DANN lachen...
geschrieben am 21.10.2010 18:36:40
( Link )
Was du gefunden hast, ist die Musik selbst. Die solltest du nicht verändern.

Deie echte Adresse für die Musiknummer scheint unbekannt zu sein.
geschrieben am 21.10.2010 18:45:17
( Link )
Hm...
Weiß jemand wie man am besten Custom Credits erstellt?
Notiz an mich:

ERST runterschlucken,DANN lachen...
geschrieben am 21.10.2010 20:29:02
( Link )
In diversen Patches, die die Ganze Musik von SMW ändern, steht bei Credits
die Adresse $0C9447. Aber wie man das ändert weiß ich leider nicht.
Mfg Chagan/Danforce.
geschrieben am 21.10.2010 21:06:07
( Link )
Hast recht, das könnte hinkommen. x61647 musst du dann im Hex-Editor eingeben, falls es stimmt.
geschrieben am 22.10.2010 11:51:58
( Link )
Jetzt funken die Credits gar nicht mehr
Nach dem Bowser Kampf werd ich einfach zurück zur OW geschmissen
Notiz an mich:

ERST runterschlucken,DANN lachen...
geschrieben am 22.10.2010 12:12:20
( Link )
Wahrscheinlich war das dann wohl eher die Addresse, die festlegte, welches Level die Credits auslöst.

Aber mal was anderes: Hast du es schon mit Addmusic versucht? carol's Addmusic kann - soweit ich weiß - die Creditsmusik ersetzen.
-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 22.10.2010 12:59:30
( Link )
Ich benutz Romis Addmusic,und da kann man es nicht einstellen,und ich möcht jetzt nicht einfach so mitten im Hack das Addmusic wechseln (Naja,denn dann kann man die ROM wegschmeißen).
Notiz an mich:

ERST runterschlucken,DANN lachen...
geschrieben am 22.10.2010 13:31:33
( Link )
Möglicherweise ist das allerdings zur Zeit die einzige leichte Möglichkeit. Ansonsten sehe ich auch keinen anderen Weg, außer sich all.log zu holen und das Ding selbst nach Credits-Musik-Auslöser abzusuchen. Ohne die nötige ASM-Erfahrung allerdinsg unmöglich.
-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 22.10.2010 13:54:15
( Link )
Die Credits gehen jetzt wieder,aber nur ohne Ton.
(Ich habs jetzt mit Addmusic by Perl und mit Addmusic by Carol versucht...)
Ich glaub ich mach doch irgendwie eher CUstom Credits...
Ausserdem,wer zur Hölle ist auf die Idee gekommen ein Addmusic zu machen,das die schon ethaltenen Melodien im Spiel allesamt rausschmeißt?
Notiz an mich:

ERST runterschlucken,DANN lachen...
geschrieben am 22.10.2010 14:01:02
( Link )
Zitat von ZukunftsNerd:
(Ich habs jetzt mit Addmusic by Perl und mit Addmusic by Carol versucht...)


Die sind identisch. Irgendwie scheint das hier nie irgendeiner zu verstehen, egal, wie oft man das sagt. ._.

Zitat von ZukunftsNerd:
Ausserdem,wer zur Hölle ist auf die Idee gekommen ein Addmusic zu machen,das die schon ethaltenen Melodien im Spiel allesamt rausschmeißt?


carol's Addmusic tauscht die Misc-Music nur aus, wenn du das so einstellst. Wenn du die Musik aus dem Music-Ordner nicht rausnimmst und dann z.B. irgendeine Datei "misc5" oder so heißt, dann geht carol's Addmusic auch davon aus, dass du dieses Lied an eben dieser Stelle einfügen willst. Entweder musst du also einfach die Musik aus dem Ordner rausnehmen oder sie umbenennen. carol's Addmusic tauscht nie einfachso Musik aus.
-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 25.10.2010 19:03:04
( Link )
Ich hab mal ein Problem mit diesem Block:
Es soll ein Teleport Block sein.
Hier der Code:

Code
db $42
JMP MarioTouch : JMP MarioTouch : JMP MarioTouch : JMP Return : JMP Return : JMP Return : JMP Return
JMP MarioTouch : JMP Return : JMP Return

MarioTouch:
LDA #$05
STA $71

Return:
RTL


Ich füge ihn mit BTSD ein,aber es ändert sich an der Stelle nix.
Die anderen Blöcke funktionieren aber einwandfrei.
Ich hab auch beim Teleport - Block bei Act like: 130 und 129 versucht...
Notiz an mich:

ERST runterschlucken,DANN lachen...
geschrieben am 25.10.2010 19:40:09
( Link )
Was soll denn das "db $42" am Anfang? Ich glaube kaum, dass das dahin gehört. Das würde ich mal ganz schnell wegmachen und es nochmal probieren.
-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 25.10.2010 19:43:25
( Link )
Ts, ts, RPG Hacker. db $42 macht 3 neue Offsets nutzbar, Corner, HeadInside und BodyInside. Das hat schon alles seine Richtigkeit. Das muss am Code liegen.

Probier als Teleportationscode mal

Code
LDA #$06
STA $71
STZ $88
STZ $89
geschrieben am 25.10.2010 19:59:15
( Link )
Funktioniert nich...
Hab ich das mit Teleportationscode falsch verstanden?
(Ich kann noch kein ASM)
Bei mir steht jetzt in der Datei:

Code
db $42 
JMP MarioTouch : JMP MarioTouch : JMP MarioTouch : JMP Return : JMP Return : JMP Return : JMP Return
JMP MarioTouch : JMP Return : JMP Return

MarioTouch:
LDA #$06
STA $71
STZ $88
STZ $89

Return:
RTL
Notiz an mich:

ERST runterschlucken,DANN lachen...
geschrieben am 25.10.2010 20:10:50
( Link )
Zitat von WYE:
Ts, ts, RPG Hacker. db $42 macht 3 neue Offsets nutzbar, Corner, HeadInside und BodyInside.


Woops. Dachte immer BTSD macht das automatsich.
-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.