Allgemeine Hex- und ASM-Fragen

geschrieben am 05.05.2012 15:26:04
( Link )
hab jetzt meinen eigenen patch gemacht XD macht aber das selbe wie der scanline hack
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 05.05.2012 21:08:22
( Link )
Ich habe mich mal mit dem Sprite-Programming-Tutorial von Iceguy befasst und dazu einige Fragen:

1) Im CFG-Editor kann man das Object-Clipping einstellen, und zwar von 0 bis F. Weiß jemand, was die einzelnen Variablen 0 bis F bedeuten, worin sie sich unterscheiden? Konnte dazu nichts weiter finden.

2) Im Tutorial wird gezeigt, wie ein Sprite Mario bei seitlicher Berührung verletzt und bei Berührung durch Mario von oben stirbt, hier ein Auszug:
Code
JSL $01A7DC		; führe Mario-Sprite-Kontakt-Routine aus
BCC NoContact ; springt weiter, wenn keine Berührung (also Carry Flag = clear)
LDA $0E ; vergleicht Marios und Sprites y-Position
CMP #$E6 ; wenn größer als #$E6, dann seitliche Berührung, ansonsten Berührung von oben
BPL SpriteWins
...

Mir erschließt sich erstens nicht, wie man ausgerechnet auf #$E6 kommt. Kann man das irgendwo nachlesen? Wie groß wäre denn der Wert, wenn Mario den Sprite von unten berührt?
Zweitens verstehe ich das BPL nicht. Dieses springt doch erst bei einer positiven Zahl, also ab #$00. Aber größer als #$E6 ist auch #$E7 bis #$FF, und diese Zahlen sind negativ. Also dürfte er doch hier noch nicht springen?

Außerdem habe ich diese Variante in einigen Sprites, auf denen diese Eigenschaft zutrifft (also bei seitl. Berührung: Mario wird verletzt, bei obiger Berührung des Sprites: Sprite stirbt), nicht gefunden. Speziell habe ich beim Classic Goomba und bei Bullet Bill geguckt. Es scheint also auch andere Möglichkeiten zu geben, oder?
geschrieben am 05.05.2012 22:17:50
( Link )
naja ich kenne es so das man diese berührungs sachen mit der Sub-Horz-Pos bzw Sub-Vert-Pos macht...
die wärte hängen einfach mit der contact routine zusammen ^^
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 04.06.2012 16:15:31
( Link )
Ich bastel gerade an einem Fisch und möchte, dass er sich wie in SMW nach einer bestimmten Zeit umdreht und in die entgegengesetzte Richtung schwimmt (horizontal). Und wenn er eine Wand berührt, soll die Dauer bis zum automatischen Richtungswechsel noch mal von vorne beginnen. Wie mache ich das ? (ich möchte nicht den Originalfisch verwenden...)
Code
BITSET		    JSL $019138			; interact with objects
LDA $164A ; check if sprite is in water
BNE INWATER
JSL $01802A ; fall down if not in water

INWATER LDA $1588,x ; ... if sprite is touching a wall.
AND #$03 ; (bit 0 and 1)..
BEQ NOFLIP ; If bits aren't set, don't flip the sprite.
LDA $157C,x ;\
EOR #$01 ; | Flip sprite's direction when touching wall.
STA $157C,x ;/

NOFLIP LDY $157C,x ; speed...
LDA XSpeed,y
STA $B6,x
LDY $151C,x
LDA SpriteSpeed,y
STA $AA,x
JSL $018022 ; update sprite x-position without gravity
JSL $01801A ; update sprite y-position without gravity

Ich schätze mal, ich muss mit einem Sprite-Table als Turn-Timer arbeiten. Kann mir jemand helfen?
geschrieben am 04.06.2012 16:53:55
( Link )
Hm probier das mal:
Code
BITSET:   JSL $019138           ; interact with objects
LDA $164A ; check if sprite is in water
BNE INWATER
JSL $01802A ; fall down if not in water

INWATER: LDA $A,x ;\Check if its time to Flip
BEQ SetTimer ;/
LDA $B,x
BNE MoveY
LDA $1588,x ; ... if sprite is touching a wall.
AND #$03 ; (bit 0 and 1)..
BEQ NOFLIP ; If bits aren't set, don't flip the sprite.
LDA #$FF
STA $A,x
STA $B,x
BRA MoveY

SetTimer: LDA #$FF ;\SetTimer
STA $A,x ;/
STZ $B,x
Flip: LDA $157C,x ;\
EOR #$01 ; | Flip sprite's direction when touching wall.
STA $157C,x ;/

NOFLIP:
MoveX: LDY $157C,x ; speed...
LDA XSpeed,y
STA $B6,x
JSL $018022 ; update sprite x-position without gravity
MoveY: LDY $151C,x
LDA SpriteSpeed,y
STA $AA,x
JSL $01801A ; update sprite y-position without gravity

Weiß nicht ob es funktionirt.. und ob es so funktionirt wie du willst XD
du musst $A,x durch ein Spritetable ersetzten das sich in jedem Frame verkleinert (Stun timer)
in $B,x ein normales Spritetable (als überprüfung ob der stuntimer schon gesetzt wurde)
und die Stun time kriegst du wohl selber hin glaube ich XD
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 04.06.2012 20:02:54
( Link )
Danke, dein Code hat mir schon sehr weitergeholfen, es gab nur Probleme mit der Object-Interaction, deshalb hab ich ihn noch etwas ändern müssen. (So ganz verstehe ich trotzdem nicht, warum ein zweiter, normaler Spritetable nötig ist und wie genau der den Stuntimer des ersten überprüft -->bin doch noch eher ein Anfänger bei sowas...)
Falls es dich interessiert, hier das Ergebnis:



Beim SMW-Cheep-Cheep hat mich für meinen Hack immer die fehlende vertikale Bewegung gestört, die beim SMB3-Cheep-Cheep da war.
geschrieben am 04.06.2012 21:21:44
( Link )
Naja ddie Adresse ist $B
ist einfach dafür da , dass nicht konstant der wert #$FF gespeichert wird wenn das Sprite die Wand berührt
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 07.06.2012 15:39:04
( Link )
Hallöchen.
Kann man mit einen Hex-Edit 'einstellen', dass man nach der Auswahl des Spielstandes direkt auf die Overworld gelangt? Also Level C5 überspringen?
Oder gibt es da vlt. andere Möglichkeiten um das zu tun?
geschrieben am 07.06.2012 16:01:33
( Link )
Zitat
01EB1
$00:9CB1
1 byte
Level number
Intro level number. Change to [00] and you will skip the intro screen (level C5). You'll warp to the OW immediately.

Der hier müsste es sein
Tutorials: ExAnimation | YouTube: W4mp3 | Twitter: https://twitter.com/SMWW4mp3
geschrieben am 07.06.2012 16:01:48
( Link )
Zitat
$00:9CB1 1 byte Intro level number. Change to [00] and you will skip the intro screen (level C5). You'll warp to the OW immediately.

EDIT NOES W4mp3! XD
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 07.06.2012 17:32:23
( Link )
Danke euch beiden!
geschrieben am 24.06.2012 19:42:17
( Link )
Für einen Block möchte ich die Routine für die Münze, die aus einem ?-Block herauskommt, aktivieren. In der ROM-Map ($02:8A66) steht, dass dazu die low nybbles von $98 und $9A gecleart werden müssen. Was muss ich dazu genau machen?

Das hier: STZ $98
STZ $9A ??
geschrieben am 24.06.2012 20:44:29
( Link )
Ein Nibble (Nybble) ist eine Gruppe von vier Bits, also ein halbes Byte. Das Low Nybble zu, äh, "clearen", heißt einfach nur, die letzten vier Bits auf 0 zu setzen.

Code
LDA $98
AND #$F0
STA $98

LDA $9A
AND #$F0
STA $9A
geschrieben am 25.06.2012 0:05:22
( Link )
Danke!
geschrieben am 06.07.2012 17:27:13
( Link )
Wieder mal eine etwas schwierigere Frage:

Ich möchte, dass sich mein Sprite, wenn er den Boden berührt, wie ein gekickter Schildkrötenpanzer verhält (er soll sich aber nicht in einen Panzer verwandeln). Er soll also:
- Bricks von der Seite zerstören, ?-Blöcke aktivieren,
- andere Gegner aus dem Weg räumen
- und, wenn Mario draufspringt, anhalten und tragbar sein.

Leider finde ich kein "Disassembly" von einem Schildkrötenpanzer. Weiß jemand, ob das irgendwie möglich ist oder gibt es irgendwo Codes für diese Verhaltensweise?
geschrieben am 07.07.2012 16:51:33
( Link )
Hm ich hätt auch ein kleines problem...
ich wollte auf meinen titlescreen layer 2 beienflussen

Code
    REP #$20
LDA $20
SEC
SBC #$0001
STA $20

LDA $1E
SEC
SBC #$0001
STA $1E
SEP #$20

jedoch tut sich da überhauptnix (in einem normalen level geht es)
deshalb frage ich mich ob es am titlescreen liegt das ich layer 2 nicht bewegen kann...
Hat jemand eine idee wie es gehen könnte?
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 07.07.2012 17:52:46
( Link )
Gehen muss das, stell mal zur Sicherheit das Layer 2 Scrolling aus, vielleicht überschreibt das die ganze Zeit $20 und $1E. Wenn das nicht funktioniert, dann schreibe lieber direkt auf $210F und $2110.
Tutorials: ExAnimation | YouTube: W4mp3 | Twitter: https://twitter.com/SMWW4mp3
geschrieben am 07.07.2012 19:30:11
( Link )
hm das wird ja immer komischer...
jetzt krieg ich layer 2 zwar bewegt ABER
1. die ersten 1,5 blöcke bewegen sich trotzdem nicht
2. layer 2 wiederholt sich direckt wieder (in LM sind aber mehr teile...)


OK ich hab ne andere möglichkeit gefunden...
wenn ich statt $1E $1468 benutzte funktionirt es problemlos...
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 09.07.2012 18:41:54
( Link )
YAY malwieder eine Frage...
Ich möchte für meinen neuen Hack keine große Overworld sondern 7 kleine maps...
gibts es irgendeinen patch/hex der das Scrolling auf der Main Map komplett deaktivirt?
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 11.07.2012 23:07:44
( Link )
Welche HEXadresse brauche ich um marios geschwindigkeit auf der OW zu verändern?
Signaturen sind bescheuert.