Custom Block

geschrieben am 19.03.2012 17:04:44
( Link )
Heyy,
es gibt einen Custom Block der einen nur durchlässt wenn man 50 Münzen hat, man kann ja den Block ändern das man z.B nur noch 10 Münzen zahlen muss.
Wie geht das??
Code
JMP MarioBelow : JMP MarioAbove : JMP MarioSide : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireBall

MarioBelow:
MarioAbove:
MarioSide:

;Be like 130 until mario has 50 coins then let him pass

LDX #$29 ; save correct sound effect for later
LDA $0660
CMP #$01 ; if $0660 = 1.., block = passable with SFX
BEQ Correct
CMP #$02 ; if $0660 = 2.., block = passable with no SFX
BEQ MarioFireBall
LDA $0DBF
CMP #$32 ; if coins aren't 50
BCC Wrong ; jump to Wrong
SEC
SBC #$32 ; subtract 50
STA $0DBF
LDA #$01
STA $0660 ; set flag to indicate that the block is passable
BRA Correct
Wrong:
LDA #$30
LDY #$01 ; cement
STA $1693
LDX #$2A ; wrong sfx
STX $1DFC
RTL
Correct:
STX $1DFC ; store correct sound effect which was preserved earlier
LDA #$02 ; set flag to 02 to indicate it's been passed already
STA $0660
SpriteV:
SpriteH:
MarioCape:
MarioFireBall:
RTL

BZW: Was muss man da Ändern? welche Zeile?
Dann brauch ich noch einen Custom Sprite der am Anfang des Levels den Cpincounter auf 0 stellt
DreamIsland wird episch <!-- s:o -->:o<!-- s:o -->
geschrieben am 19.03.2012 18:25:15
( Link )
Einfach bei !CoinsNeeded die anzahl der Münzen in HEX eingeben (hab jetzt den code leicht geändert und nicht getestet, sollte aber funktionieren):
Code


!CoinsNeeded = $xx
JMP MarioBelow : JMP MarioAbove : JMP MarioSide : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireBall

MarioBelow:
MarioAbove:
MarioSide:

;Be like 130 until mario has 50 coins then let him pass

LDX #$29 ; save correct sound effect for later
LDA $0660
CMP #$01 ; if $0660 = 1.., block = passable with SFX
BEQ Correct
CMP #$02 ; if $0660 = 2.., block = passable with no SFX
BEQ MarioFireBall
LDA $0DBF
CMP !CoinsNeeded ; if coins aren't 50
BCC Wrong ; jump to Wrong
SEC
SBC !CoinsNeeded ; subtract 50
STA $0DBF
LDA #$01
STA $0660 ; set flag to indicate that the block is passable
BRA Correct
Wrong:
LDA #$30
LDY #$01 ; cement
STA $1693
LDX #$2A ; wrong sfx
STX $1DFC
RTL
Correct:
STX $1DFC ; store correct sound effect which was preserved earlier
LDA #$02 ; set flag to 02 to indicate it's been passed already
STA $0660
SpriteV:
SpriteH:
MarioCape:
MarioFireBall:
RTL

Und wenn du den Coincounter auf null setzen möchtest, nimm einfach folgenden Block:
Code
JMP MarioBelow : JMP MarioAbove : JMP MarioSide : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireBall

MarioAbove:
MarioBelow:
MarioSide:
STZ $0DBF
SpriteV:
SpriteH:
MarioCape:
MarioFireBall:
RTL

Platzier den so, dass man den nur einmal berührt. Und stelle das Act like auf 48.
Frag einfach, wenn du was nicht verstehst bzw. es nicht funktioniert
Tutorials: ExAnimation | YouTube: W4mp3 | Twitter: https://twitter.com/SMWW4mp3
geschrieben am 19.03.2012 18:32:33
( Link )
Zitat von W4mp3:
Einfach bei !CoinsNeeded die anzahl der Münzen in HEX eingeben (hab jetzt den code leicht geändert und nicht getestet, sollte aber funktionieren):
Code


!CoinsNeeded = $xx
JMP MarioBelow : JMP MarioAbove : JMP MarioSide : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireBall

MarioBelow:
MarioAbove:
MarioSide:

;Be like 130 until mario has 50 coins then let him pass

LDX #$29 ; save correct sound effect for later
LDA $0660
CMP #$01 ; if $0660 = 1.., block = passable with SFX
BEQ Correct
CMP #$02 ; if $0660 = 2.., block = passable with no SFX
BEQ MarioFireBall
LDA $0DBF
CMP !CoinsNeeded ; if coins aren't 50
BCC Wrong ; jump to Wrong
SEC
SBC !CoinsNeeded ; subtract 50
STA $0DBF
LDA #$01
STA $0660 ; set flag to indicate that the block is passable
BRA Correct
Wrong:
LDA #$30
LDY #$01 ; cement
STA $1693
LDX #$2A ; wrong sfx
STX $1DFC
RTL
Correct:
STX $1DFC ; store correct sound effect which was preserved earlier
LDA #$02 ; set flag to 02 to indicate it's been passed already
STA $0660
SpriteV:
SpriteH:
MarioCape:
MarioFireBall:
RTL


hää? wie bei coins needed? hast du den Block so eingestellt das man 10 Münzen braucht? und auserdem was ist eine 10 ind HEX ?
DreamIsland wird episch <!-- s:o -->:o<!-- s:o -->
geschrieben am 19.03.2012 19:00:12
( Link )
Dein Code würde nicht funktionieren, wampe. hier, das geht:

Code
!CoinsNeeded = xx
JMP MarioBelow : JMP MarioAbove : JMP MarioSide : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireBall

MarioBelow:
MarioAbove:
MarioSide:

;Be like 130 until mario has 50 coins then let him pass

LDX #$29 ; save correct sound effect for later
LDA $0660
CMP #$01 ; if $0660 = 1.., block = passable with SFX
BEQ Correct
CMP #$02 ; if $0660 = 2.., block = passable with no SFX
BEQ MarioFireBall
LDA $0DBF
CMP #!CoinsNeeded ; if coins aren't 50
BCC Wrong ; jump to Wrong
SEC
SBC #!CoinsNeeded ; subtract 50
STA $0DBF
LDA #$01
STA $0660 ; set flag to indicate that the block is passable
BRA Correct
Wrong:
LDA #$30
LDY #$01 ; cement
STA $1693
LDX #$2A ; wrong sfx
STX $1DFC
RTL
Correct:
STX $1DFC ; store correct sound effect which was preserved earlier
LDA #$02 ; set flag to 02 to indicate it's been passed already
STA $0660
SpriteV:
SpriteH:
MarioCape:
MarioFireBall:
RTL


Mit !CoinsNeeded ist das Define ganz oben gemeint, das wampe hinzugefügt hat (und ich etwas geändert habe). Hex (das man übrigens klein schreibt) brauchst du jetzt gar nicht mehr. Einfach in die erste Zeile gucken und das xx durch 10 ersetzen.
geschrieben am 19.03.2012 19:26:04
( Link )
Also das = xx durch eine X-belibige zahl ersetzten wie z.B 8 damit man durchkommt und nur 8 Münzen verliert?
also so?

Code
!CoinsNeeded = 8
JMP MarioBelow : JMP MarioAbove : JMP MarioSide : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireBall

MarioBelow:
MarioAbove:
MarioSide:

;Be like 130 until mario has 50 coins then let him pass

LDX #$29 ; save correct sound effect for later
LDA $0660
CMP #$01 ; if $0660 = 1.., block = passable with SFX
BEQ Correct
CMP #$02 ; if $0660 = 2.., block = passable with no SFX
BEQ MarioFireBall
LDA $0DBF
CMP #!CoinsNeeded ; if coins aren't 50
BCC Wrong ; jump to Wrong
SEC
SBC #!CoinsNeeded ; subtract 50
STA $0DBF
LDA #$01
STA $0660 ; set flag to indicate that the block is passable
BRA Correct
Wrong:
LDA #$30
LDY #$01 ; cement
STA $1693
LDX #$2A ; wrong sfx
STX $1DFC
RTL
Correct:
STX $1DFC ; store correct sound effect which was preserved earlier
LDA #$02 ; set flag to 02 to indicate it's been passed already
STA $0660
SpriteV:
SpriteH:
MarioCape:
MarioFireBall:
RTL
DreamIsland wird episch <!-- s:o -->:o<!-- s:o -->
geschrieben am 19.03.2012 19:38:41
zuletzt bearbeitet von kooooopa am 19.03.2012 20:05:01.
( Link )
Ich denke 08.
Und aufgapasst, du musst es in Hex schreiben.
Statt 14 z.B. 0D

Edit: Nooooooooooo!
geschrieben am 19.03.2012 19:52:46
( Link )
Zitat von kooooopa:
Ich denke 08.
Und aufgapasst, du musst es in Hex schreiben.
Statt 14 z.B. 0D


Ah ok danke guter Tipp
DreamIsland wird episch <!-- s:o -->:o<!-- s:o -->
geschrieben am 19.03.2012 19:53:58
( Link )
Zitat von kooooopa:
Und aufgapasst, du musst es in Hex schreiben.
Statt 14 z.B. 0D

Zitat von WYE:
Hex (das man übrigens klein schreibt) brauchst du jetzt gar nicht mehr. Einfach in die erste Zeile gucken und das xx durch 10 ersetzen.


*read*

geschrieben am 20.03.2012 17:04:39
( Link )
Zitat von W4mp3:

Und wenn du den Coincounter auf null setzen möchtest, nimm einfach folgenden Block:
Code
JMP MarioBelow : JMP MarioAbove : JMP MarioSide : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireBall

MarioAbove:
MarioBelow:
MarioSide:
STZ $0DBF
SpriteV:
SpriteH:
MarioCape:
MarioFireBall:
RTL

Platzier den so, dass man den nur einmal berührt. Und stelle das Act like auf 48.
Frag einfach, wenn du was nicht verstehst bzw. es nicht funktioniert

Wenn man den Block berührt werden dann die Coins auf 0 gestellt richtig? verschwindet danach der Block auch also das man ihn nur 1x berühren KANN ?
DreamIsland wird episch <!-- s:o -->:o<!-- s:o -->
geschrieben am 20.03.2012 20:24:13
( Link )
Das hab ich natürlich nicht eingebaut, ich hab auch keine Ahnung wie das funktioniert. Platziere den Block einfach am Anfang so, dass man den nur einmal berührt.
Tutorials: ExAnimation | YouTube: W4mp3 | Twitter: https://twitter.com/SMWW4mp3
geschrieben am 21.03.2012 15:35:40
( Link )
Zitat von W4mp3:
Das hab ich natürlich nicht eingebaut, ich hab auch keine Ahnung wie das funktioniert. Platziere den Block einfach am Anfang so, dass man den nur einmal berührt.
Ja wenn er verschwinden würde wäre er besser (es gibt Idioten(ICH) die rennen wieder zum anfang hin) also wird der Münzcounter wider auf 0 gestellt...
DreamIsland wird episch <!-- s:o -->:o<!-- s:o -->
geschrieben am 21.03.2012 17:18:53
( Link )
nochwas!
Wenn man durch den Block (10Coinpay) geht und dnach nochmal 10 (oderr mehrere coins) sammelt und weiter hinten wider einen block (10Coinpay) macht, kommt man durch ohne zu "zahlen" warum?
DreamIsland wird episch <!-- s:o -->:o<!-- s:o -->