Allgemeine Hex- und ASM-Fragen

geschrieben am 22.08.2012 17:22:00
( Link )
Wie wär's mit $1493? Wenn die nicht Null ist, geht man durchs Ziel.
geschrieben am 22.08.2012 17:56:36
( Link )
vermutlich würde das ganze in einer clean rom funktioniren doch ich habe das gefühl das LM einen ASM hack ein baut der den origial yoshi coin blink effect code umgeht...
(selbst wenn ich den blink Code komplett mit NOP ersetzte blinken die Yoshi coins im Level die gelben punkte auf der OW jedoch nicht mehr...)
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 22.08.2012 18:24:48
( Link )
Code
$7E:13D6
1 byte
Timer
Amount of time to wait until the score-incrementing drumroll begins when you beat a level. Any time you enter a level, this address is set to #$50. Once you beat the level and the number of bonus stars you won and the score is displayed (or just the score if you didn't cut the goal tape), this timer will decrement itself once per frame. Once it reaches a negative value or zero, the drumroll will commence.
Once the drumroll ends, this is set to #$30, and then set to zero upon going to the overworld. It serves the same purpose after you beat a boss as well.

Einfach gucken, ob das nicht #$50 ist.
Wenn das nicht funktioniert, dann musst du irgendwie die Goal Tape routine ein wenig umschreiben, mehr weiß ich grade nicht.
Tutorials: ExAnimation | YouTube: W4mp3 | Twitter: https://twitter.com/SMWW4mp3
geschrieben am 22.08.2012 18:28:40
( Link )
Warum genau willst du eigentlich die Farbanimation der Yoshi-Münze abschalten? Reicht es nicht, wenn du um das Ziel herum keine Yoshi-Münzen platzierst?
-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 24.08.2012 17:53:23
( Link )
naja benutzte jetzt einfach eine custom paletten animation ^^
naja nächste frage D:
Wie kann ich herrausfinden auf welchem "level" der Player im moment steht
(ich meine nicht das Level tile sondern die Level Nummer wenn man es betritt)
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 24.08.2012 18:02:19
( Link )
Code
; ###############################################################################
; # Nummer des Levels herausfinden, auf dessen Teil man gerade auf der OW steht #
; # ($13BF-Format - von Alcaro) #
; ###############################################################################

GetLevelNumberFromOW:

REP #$30

LDA $1F1F
STA $00
LDA $1F21
STA $02

LDX #$0000

PHK
PEA.w .jslrtsreturn-1
PEA.w $048E48-1
JML $049885
.jslrtsreturn

LDX $04
LDA $7ED000,x
SEP #$30

RTL
geschrieben am 25.08.2012 2:24:46
( Link )
And the next question :
Ich hab letztens mal den HDMA fix 4.2 von Ice man (?) Runtergeladen habe damit nur ein problem...
wenn ich mit einem sprite in der hand durch eine Pipe gehe (pipe ist auf priority enabled) dann sorgt der Patch ja dafür das
mario nicht hinter blöcken verschwindet die z.b. auch auf layer 1 sind jedoch wird das Sprite das mario trägt trotzdem hinter die blöcke gepackt...
(ich hoffe ich habe das einigermaßen verständlich erklärt ;/ )
wie kann ich das noch fixen?
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 25.08.2012 10:58:22
( Link )
@WYE: Ich bin mir nicht sicher, ob Alcaros Version wirklich 100%ig funktioniert. Jedenfalls hier mal eine Alternative, direkt aus der ROM kopiert:
Code
; Loads translevel number of current position on overworld

!owram = $0DC3 ; 4 Bytes (es reichen vielleicht auch zwei und die vier kommen durch die Verwendung in meinem Code zustande)

GetTransLevel:
ldy #$00
rep #$30
ldx $0DD6
lda $1F1F,x
and #$000F
sta !owram
lda $1F21,x
and #$000F
asl
asl
asl
asl
sta !owram+2
lda $1F1F,x
and #$0010
asl
asl
asl
asl
ora !owram
sta !owram
lda $1F21,x
and #$0010
asl
asl
asl
asl
asl
ora !owram+2
ora !owram
tax
lda $0DD6
and #$00FF
lsr
lsr
tay
lda $1F11,y
and #$000F
beq .nosubmap
txa
clc
adc #$0400
tax

.nosubmap
sep #$20
lda $7ED000,x
sta $13BF
sep #$10

rts
-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.08.2012 11:55:24
( Link )
Ich hab noch nie erlebt, dass die nicht funktioniert. Was macht deine Version denn anders?
geschrieben am 25.08.2012 12:08:20
( Link )
Ehrlich gesagt weiß ichs nicht. Aber als ich mit den Overworld SMW Coins für SMWCPII angefangen habe, hat Sind mir in einer PN geschrieben
Zitat von Sind:
Alcaro attempted to make it too, but for some reason it crashed the rom.

Und ich gehe mal davon aus, dass Alcaro eben diesen Code verwendet hat. Mit meinem Code habe ich es aber schon getestet und der funktioniert definitiv, auch in SMWCPII. Die genauen Unterschiede habe ich mir jetzt nicht angeguckt, aber meine Routine ist - wie gesagt - direkt aus dem Original übernommen und scheint ja auch um einiges länger zu sein.
-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.08.2012 12:35:56
( Link )
hm naja den einzigen großen Unterschied zwischen der von Alcaro und RPG Hacker ,den ich sehe, ist das RPG Hackers Rotine daran denkt das auch Luigi auf der OW sein kann und nicht immer Marios Position lädt (in meinem Fall egal da es keinen multiplayer gibt) ansonsten springt Alcaros code ja auch nur zu der Rotine vom original Spiel...
naja
weiß jemand wie ich machen kann das Sprites noch vor Objeckten angezeigt werden wenn man mit ihnen durch eine Pipe geht?
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 25.08.2012 13:10:52
( Link )
Zitat von mzünni:
das RPG Hackers Rotine daran denkt das auch Luigi auf der OW sein kann und nicht immer Marios Position lädt (in meinem Fall egal da es keinen multiplayer gibt)

Ups, dafür bin ich verantwortlich. Der Original-Code von Alcaro nimmt darauf auch Rücksicht, aber den Teil hab ich entfernt.
geschrieben am 02.09.2012 16:49:35
( Link )
Hi.
Hab ne frage zu ASM weil ich anfangen will es zu lernen.
Sind ASM Codes Levelbasiert, oder kann ich sie auf mein komplettes Gameplay anwenden?
Hab ne Idee über ein RPG-Styled System mit Zaubersprüchen (wie ich das mache will ich selbst herausfinden ).
und wäre iwie doof wenn man sie jedes Level neu einsammeln müsste.
geschrieben am 02.09.2012 17:02:39
( Link )
Das kommt immer drauf an, wo du den Code einfügst. ASM ist die Programmiersprache für SNES-Spiele und hängt erst mal nicht von Leveln oder sonst was ab.

Mit dem Patch "uberASM" kannst du ASM-COde an einer Menge vorbesteimmter Stellen einfügen - unter anderem in bestimmten Leveln, nur auf der Overworld - oder auch in allen Leveln zusammen.
geschrieben am 02.09.2012 17:50:20
( Link )
Okay wenn das so ist
Und noch ne andere Frage.
In einigen Beiträgen auf SMWCentral ist immer von Free Space die rede.
Ich interpretier das jetz als nicht genutzte/leere Offsets.
Heißt das, dass ich dort alles mögliche reinmachen kann?
geschrieben am 02.09.2012 18:13:49
( Link )
Zitat von Wischmop:
Heißt das, dass ich dort alles mögliche reinmachen kann?


Yes.
-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 02.09.2012 18:36:24
( Link )
Also kann ich mir nichts dir nichts den Offsets iwelche Werte zuweisen?
Hab mal den HEX-Editor geöffnet und hab folgendes gemacht:

0008A599 = 32
0008A59B = 32
0008A59C = 0F
0008A59D = 0F

Die Idee war, dass diese Werte Max und Current von HP und MP darstellen sollen.
08A599 ist dabei MAX HP
und
08A59C MAX MP.

Und mit ASM kann ich dann bei bestimmten Situationen die Werte in diesen Offsets ändern?
(Ich muss erstmal das Grundprinzip davon verstehen...)
geschrieben am 02.09.2012 18:51:52
( Link )
Die Denkweise ist so nicht ganz richtig, aber tröste dich, genau dieselbe hatte ich anfangs auch. Lange hab ich mich gefragt "Wie wird bestimmt, welche Offsets für welche Werte stehen?"

Die Zahlen, die du siehst, wenn du eine ROM in einem Hex-Editor öffnest, sind nichts anderes als der ASM-Code, mit dem die ROM programmiert ist, und zwar übersetzt in Hex-Zahlen, damit der Prozessor den Code verstehen kann. Eine Folge von Bytes könnte zum Beispiel sein "A9 01 8D FC 1D 60". Das ist ASM, nur für Menschen nicht ganz so gut lesbar.

Nun kannst du ja noch kein ASM, daher sollte ich das vielleicht nicht mit Codebeispielen erklären... aber in ASM werden Befehle und Zahlen nebeneinander verwendet. DIe beiden ersten Bytes zum Beispiel, "A9 01", bedeuten so viel wie "lade den Wert 01". (Nur falls es dich interessiert, in lesbarem ASM geschrieben hieße das "LDA #$01"). Anderes Beispiel: "Vergleiche mit 32" würde "C9 32" heißen, wobei die 32 hier für deinen Max-HP-Wert stehen kann, und diese beiden Bytes wären am Ende irgendwo unter unzähligen anderen in der ROM drin. Später forscht jemand anders dort nach, entdeckt die 32, findet heraus, wofür sie zuständig ist, und teilt sie anderen mit. ("Hier, an Offset soundso, diese 32 steht für den maximalen HP-Wert!")

Tja, und so kommt die ROM-Map zustande - die Zahlen in der ROM sind der Programmiercode, und manche Stellen im Code stehen für Zahlen, mit denen etwas gemacht wird. Oh Mann, ich hoffe, das war zumindest halbwegs verständlich.
geschrieben am 02.09.2012 18:55:35
( Link )
Jaja, hab ich schon (irgendwie) verstanden.
Aber das was du mir gerade erzählst gilt ja für die "normalen" Offsets.
Ich hab aber leere Offsets (also in denen nur 00 stehen) verwendet,
oder macht das keinen unterschied?
geschrieben am 02.09.2012 18:57:20
( Link )
Um es mal vereinfacht zu sagen: Wenn du "leere" Offsets in der ROM beschreibst, beschreibst du... nunja, die ROM eben. Variablen (und dazu gehören nunmal auch HP und MP dazu) gehören aber in den RAM und nicht in die ROM, denn ROM kann zur Laufzeit nicht verändert werden. Daher kommt auch ihr Name, nämlich "Read Only Memory", als Speicher, der nur gelesen und nicht beschrieben werden kann.
-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.