"Cape damage"

geschrieben am 03.11.2012 13:42:06
zuletzt bearbeitet von Shog am 15.12.2012 19:37:55.
( Link )
Also ich habe 2 Problemchen:
1. "Cape damage"

Wie ihr vielleicht noch wisst habe ich damals einen Patch gemacht, der meinen Elite Koopa wenn er sich duckt erlaubt, Scahden zuzufügen wenn man noch zusätzlich rennt - der macht aber Star Damage, und das gefällt mir überhaupt nicht. Mir wäre es viel viel lieber, da kein Cape vorhanden ist, "Cape Damage" zu machen. Doch wie funktioniert das? (Ihr müsst dabei beachten das Mario selbst das Cape wäre)

Ideen von mir, die ich nicht umsetzen kann (>_>)
-Wenn Koopa dreht->spawnt unsichtbaren, 16x16 Sprite auf Koopa Position der "Cape Damage" macht

2. Mario einfrieren

Für das Intro muss ich den Koopa einfrieren und er muss weiter das Schiff "reiten":


Alle erdenklichen Lösungen sind möglich: Sprites, Block (Favorit), meinetwegen sogar Patch


Danke für Hilfe!
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...
geschrieben am 07.11.2012 11:47:34
( Link )
Kleiner *Bump* (Ich weiß das es weit oben ist ), der Bump hat nur die Funktion, dass ihr Leute da draußen Bescheid wisst, dass ich dieses Problem nicht gelöst habe
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...
geschrieben am 07.11.2012 14:55:41
( Link )
zu 1.
Du musst da nur das Starpowerding mit JSL $00D062 ersetzen. Außerdem musst du dann noch das hier patchen:
Code
header
lorom

;Erlaube immer den capespin
org $00D067
db $00

;Länge des capespins
org $00D077
db $08

;Soundeffekt
org $00D07C
db $

Ich bin mir nicht sicher, ob das funktioniert

zu 2.
Einfach als Generator oder LevelASM einfügen:
Code
LDA $1446	;\
LSR A ;|Mario auf
LSR A ;|der selben Position
LSR A ;|auf dem Bildschirm
LSR A ;|festsetzen.
STA $7B ;/
STZ $0DAA ;Controller Data 1 (one frame)
STZ $0DAB ;Controller Data 1
STZ $0DAC ;Controller Data 2 (one frame)
STZ $0DAD ;Controller Data 2
RTL

Dass das hier funktioniert garantiere ich nicht
Tutorials: ExAnimation | YouTube: W4mp3 | Twitter: https://twitter.com/SMWW4mp3
geschrieben am 07.11.2012 18:28:05
( Link )
Danke Wampe!
Ich meine Dampe Wamp3 !
... okay der war schlecht

Ich muss damit noch rumprobieren, sollte es einen Fehler etc. geben sag ich sofort hier Bescheid !
(den der Fehler muss ja nicht von dir ausgehen sondern beispielweise von meinem anderen Patch o.Ä.)
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...
geschrieben am 07.11.2012 20:59:16
( Link )
okay ich habe meinen Panzertackle wieder hinkriegt mit Animation und co.) aber sobald ich das "JSL" von die Wampe einfüge und nach unten drügge, stürzt das Spiel ab :/

Bist du dir sicher, dass ersteres, JSL im Panzerpatch und das andere als extra Patch funktioniert? Bei mir nämlich nicht
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...
geschrieben am 07.11.2012 22:00:34
( Link )
um Cape damage zu machen würde ich ja einfach das tun: (kp ob es so einfach geht XD)
Code

REP #$20
LDA XPos
STA $13E9
LDA YPos
STA $13EB
SEP #$20
LDA #$01
STA $13E8
LDA #$12
STA $14A6


Ach ja warum das von W4mp3 nicht geht liegt daran das die Subrotine mit RTS endet du müsstest das machen:
Code
	PHK
PEA.w .jslrtsreturn-1
PEA $84CE ; varies per bank, must point to RTL-1 (example: $0084CF-1, must be in the same bank as the JML target)
JML $00D076
.jslrtsreturn


@W4mp3 wieso zu $00D062 jumpen?
ich würde einfach die If's komplett überspringen
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.11.2012 22:17:53
( Link )
zum ersteren: Was genau meinst du mit x beziehungsweise "YPos"? Was soll ich damit genau machen?

zum zweiten:

Code
       PHK
PEA.w .jslrtsreturn-1
PEA $84CE ; varies per bank, must point to RTL-1 (example: $0084CF-1, must be in the same bank as the JML target)
JML $00D076
.jslrtsreturn


Wohin gehört das JSL $00D062 ?

Edit: Ach stimmt, dass ist auch nicht unwichtig: Wie mache ich es so, dass der XSpeed höher als $15 UND niedriger $FF -$14 nur den Status "Drehen" ermöglicht. Sprich alle Werte für X zwischen 15 und E0 erlauben die Ausführung des Codes. Wie macht man das nochmal :3
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...
geschrieben am 08.11.2012 15:25:09
( Link )
Den code solltest du direkt so benutzen können.
(ansonsten das JML ändern aber die angegebene adresse müsste schon passen)
mit X/Y pos ist "die Position des Capes" gemeint also wo der schaden gemacht wird

Code
LDA XSpeed
SEC
SBC #$10 ;MinimalWert
CMP #$D0 ;MaximalWert - Minimalwert
BCC BetweenValues
NotBetweenValues:

BetweenValues:
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 15.12.2012 19:44:29
( Link )
Tut mir Leid, ich habe leider vergessen, etwas zu fragen:

Code
REP #$20
LDA XPos
STA $13E9
LDA YPos
STA $13EB
SEP #$20
LDA #$01
STA $13E8
LDA #$12
STA $14A6


Code

;;
[Code der überprüft ob Mario duckt/auf Boden etc.]
[Hier soll der Schadenscode eigentlich hin]
[Animation]
return:
BetweenValues:
RTL
Poses:
db $42,$BB,$30,$3C ;

%RATS_end(0)


Ich habe nämlich vergessen zu fragen, wie ich "XPos" und "YPos" DEFINIERE. Ich weiß nicht wie man etwas nach Mario x/y Position auf dem Bildschirm einrichten kann :/ Wüsste jemand wie das geht?

Ansonsten wäre der Patch ja fertig...oh und es spielt überhaupt keine Rolle ob zum Funktionieren des Ganzen das Cape sichtbar sein muss (das ist ein weiteres Problem...), denn man die Grafiken einfach wegeditieren^^

Ansonsten habe ich per Hex-Edit schonmal die "Reichweite" des Capes verringert herpderp
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...
geschrieben am 15.12.2012 21:27:18
( Link )
das ist marios Position ich habe XPos geschschrieben weil ich zu faul war in der Ram map nachzugucken welche adressen das sind...
einfach das Xpos durch $XX (x position von Mario) ersetzten
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 15.12.2012 21:35:52
( Link )
Müssten Labels nicht ! heißen? Falls ich das richtig verstanden habe brauchst du das hier:
Code
!XPos = $94 ;Achtung! 16-bit!!11
!YPos = $96 ; Ebenfalls 16-bit!

Dann kannst du relativ von Mario aus das Cape verschieben, z.B:
Code
PHX
LDX $76 ;Mario Direction (00=Left;01=Right)
LDA !XPos
CLC
ADC CapeOffsetX,x
STA $13E9 ;CapeXPos
LDA !YPos
CLC
ADC CapeOffsetY
STA $13EB
[CapeCodeZeugs]
CapeOffsetX:
db $-10,$10 ;Abstand in Pixel Horizontal
CapeOffsetY:
db $08 ;Abstand in Pixel Vertikal


Oder das von mzünni.
Code
$7E:0094
2 bytes
Player
Player X position (16-bit) within the level, next frame (calculates player position one frame ahead, as opposed to $7E:00D1).

Code
$7E:0096
2 bytes
Player
Player Y position (16-bit) within the level, next frame (calculates player position one frame ahead, as opposed to $7E:00D3).
Tutorials: ExAnimation | YouTube: W4mp3 | Twitter: https://twitter.com/SMWW4mp3
geschrieben am 16.12.2012 11:24:35
( Link )
Okay ich habe verschiedenes(Code umgeändert, etc.) versucht, der Code crasht immer

Bestimmt ist es was ganz ordinäres, was ich übersehen habe: Ich bitte um Hilfe
PS: Falls jemand den Code nutzen will, kein Problem: Es ist eh die Leistung von anderen, die ihn "erschaffen haben"

Code

;@xkas
!XPos = $94 ;Achtung! 16-bit!!11
!YPos = $96 ; Ebenfalls 16-bit!


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 $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 $7B ;\Check if you're moving
SEC
SBC #$10 ;MinimalWert
CMP #$EB ;MaximalWert - Minimalwert
BCS BetweenValues
NotBetweenValues:
LDA $1470 ;\Check if you're carrying something
BNE return ;/
LDA $73 ;\check if you're ducking
BEQ return ;/
LDA $77 ;\ as always, Check if your in the air
AND #$04 ;|
BEQ return ;/
;;
PHX
LDX $76 ;Mario Direction (00=Left;01=Right)
;REP #$20
LDA !XPos
CLC
ADC CapeOffsetX,x
STA $13E9 ;CapeXPos
LDA !YPos
CLC
ADC CapeOffsetY
STA $13EB
;SEP #$20
;;;
skip:
PHX
LDA $14 ; timer that increases each frame
LSR
AND #$03 ; animate between 00,01,02 and 03 (4 frames)
TAX ; and put that value into X
LDA Poses,x ; Load from the table
PLX
STA $13E0 ; store into pose address
;
PHK
PEA.w .jslrtsreturn-1
PEA $84CE ; varies per bank, must point to RTL-1 (example: $0084CF-1, must be in the same bank as the JML target)
JML $00D076
.jslrtsreturn
;
;;

return:
BetweenValues:
RTL
Poses:
db $42,$BB,$30,$3C ;
CapeOffsetX:
db $10 ;Abstand in Pixel Horizontal
CapeOffsetY:
db $08 ;Abstand in Pixel Vertikal



%RATS_end(0)
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...
geschrieben am 16.12.2012 18:23:14
( Link )
versuch das:
Code
    ;@xkas
!Freespace = $218015
!XPos = $94 ;Achtung! 16-bit!!11
!YPos = $96 ; Ebenfalls 16-bit!

lorom ;\ ROM is LoRom
header ;/ and has a header.

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

;=========================
org !Freespace
!CodeSize = Ending-Routine
db "STAR"
dw !CodeSize-$01
dw !CodeSize-$01^$FFFF
Routine:
;=========================

StatusCode:
LDA #$02 ;\ Restore previous
STA $420B ;/ hijacked NMI routine.
LDA $7B ;\Check if you're moving
SEC
SBC #$10 ;MinimalWert
CMP #$EB ;MaximalWert - Minimalwert
BCS BetweenValues
NotBetweenValues:
LDA $1470 ;\Check if you're carrying something
BNE return ;/
LDA $73 ;\check if you're ducking
BEQ return ;/
LDA $77 ;\ as always, Check if your in the air
AND #$04 ;|
BEQ return ;/
;;
PHX
LDA $76 ;Mario Direction (00=Left;01=Right)
ASL
TAX
REP #$20
LDA !XPos
CLC
ADC CapeOffsetX,x
STA $13E9 ;CapeXPos
LDA !YPos
CLC
ADC CapeOffsetY
STA $13EB
SEP #$20
PLX
;;;
skip:
PHX
LDA $14 ; timer that increases each frame
LSR
AND #$03 ; animate between 00,01,02 and 03 (4 frames)
TAX ; and put that value into X
LDA Poses,x ; Load from the table
PLX
STA $13E0 ; store into pose address
;
PHK
PEA.w .jslrtsreturn-1
PEA $84CE ; varies per bank, must point to RTL-1 (example: $0084CF-1, must be in the same bank as the JML target)
JML $00D076
.jslrtsreturn
;
;;

return:
BetweenValues:
RTL
Poses:
db $42,$BB,$30,$3C ;
CapeOffsetX:
dw $0010,$FFF0 ;Abstand in Pixel Horizontal
CapeOffsetY:
db $0008 ;Abstand in Pixel Vertikal
Ending:
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 18.12.2012 20:32:17
( Link )
Ja ich glaube der Code "funzt", es gibt halt nur ein paar kleine Schwierigkeiten:

- Anscheinend muss das Cape tatsächlich auf dem Bildschirm sein, damit die Cape Swing Routine ausgeführt wird ://

- Der "Spin Jump" auf dem Boden, also sprich das Mario sich dreht, überschreibt die Custom Posen die ich geplant habe ://

Für ersteres muss ich mir all.log anschauen, bestimmt gibt dafür eine einfache Hex Edit Lösung (Sowas wie zeige "immer" die Cape Grafiken, was mit n bisschen Grafikänderung einfach zu ändern ist )

Bei Spin Jump, hmm schwieriger, ich würde einfach die LDA x Tabelle mit Posen ausm Rom mitm Hex Edit zu NOPS machen oder so, habt ihr einen Tipp wie ich danach gucken kann?


Edit: Ich habe eine Idee, falls das mit dem Cape nicht klappen sollte Also sagt Bescheid falls euch nichts dazu einfällt

Ah ich habe tatsächlich eine "bessere" Idee: Ich werde doch den Slideattack mit Starpower machen (muss dann einpaar Sprites "tweaken", und das Cape einfach umfunktionieren, ich weiß zwar nicht, wie man verhindert, dass man damit fliegt, aber WYE hat das ja auch in seinem Pokey Hack hinbekommen, habe schon eine Idee, was ich mache hehehe
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...