Bouncing Block Grafik

geschrieben am 07.06.2013 8:54:52
( Link )
Hallöchen liebe Leude,

ich habe mal wieder ein kleines Problem in sachen smw Hacking.

Ich habe mir von smwc folgenden Block besorgt: SMB3 Brick (oder so ähnlich)

dazu habe ich mir auch eine eigene Blockgrafik erstellt.

das Problem ist jetzt folgendes:

wenn mario als kleiner Mario unter den Block springt, dann ist in der "Bounceanimation" immer der originale gelbe Block zu sehen.

ich möchte es jedoch, dass meine eigene Blockgrafik dort zu sehen ist.

(sieht doch ziemlich sch...aus, wenn sich der block zwischenzeitlich verändert... oder?)

was muss ich da machen, dass ich meine eigene Grafik zum "Bouncen" bringe?
geschrieben am 07.06.2013 14:04:28
( Link )
ALSO...
Erstmal, ist es eine ExGFX oder ein Custom Block? Wenn's nur ne ExGFX ist, dann musst du den Sprite auch noch anpassen, weil das, was sich zwischenzeitlich bewegt, ist ein Sprite.
Wenn ich dich aber richtig verstanden habe, ist es ein Custom Block. Dann solltest du bei sowas immer erst den Code zeigen, das ist oft am praktischsten
Was ich aber nicht verstehe: Wo "bounct" denn der SMB3-Block bitte?
Du meinst doch den?
Bounce heißt "springen" oder "abprallen", wenn du nur das Wort verwechselt hast
Zitat von Robju am 22.11.2013:
ICH BRING EUCH ALLE UM!!
Zitat von Dominik am 07.08.2013:
Fick dich Rob, ich wusste dass das kommt!

anzeigen
MFG: Wieso binn ich als Ideot genannt?Das ist net nett.
Robbinn, ideot, Satzstellung, Grammatik.
MFGSchonn gut, schon gut, das mit "binn" und "Idoet" ist ein Typo.
RobDas e und i sind 4 tasten voneinander entfernt.
MFGschnelle Finger?
Rob Nein.
MFG *facepalm*
Rob Wenn man Idiot schreibt kommt man nichtmal in die Nähe eines "e" s
MFG Doch, warum hat man denn sonst zwei Finger?
Rob Das hat mir der ANzahl der Finger nichts zu tun.
MFG Ich meine Hände.
Bro ich hab 3 stück
Rob Hat auch kit der Anzahl der Händer nichts zu tun
MFG Und es hat mit der Anzahl der Hände zu tun.
Rob Nein.
MFG Ich schreibe doch mit beiden.
Rob YOU ARE AN IDIOT, AH HAHAHAHAHA HAAAAHAAA HAHAHAHAAAAA!

DIE KONFI
DIE andere KONFI
JJJAAAAAAAH
geschrieben am 07.06.2013 15:27:50
( Link )
also...

hier ist der code von dem Block:

db $42 ; enable corner and inside offsets
JMP MarioBelow : JMP MarioAbove : JMP MarioSide : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireBall : JMP MarioCorner : JMP HeadInside : JMP BodyInside

!Bouncetype = $00 ; 00 = bounce when hit
; 01 = do NOT bounce (Demo world style)
!Bricktype = $00 ; 00 = turn into coin when pow activated (set "block acts like" to 132!)
; 01 = do NOT turn into coin when pow activated (set "block acts like" to 130!)
!SMB3coin = $00 ; 00 = brick
; 01 = SMB3 coin (keep Bricktype to $00)


MarioBelow:
LDA $14AD
AND.b #!Bricktype-$01 ; depends on bricktype
BRA !SMB3coin<<2
BNE Pow ;if POW activated, do nothing (hey, you don't want a collectable shattering coin)
BRA $02
BEQ Pow
LDA $19
BNE MarioBig ; Shatter if Mario is big or flower or blahblah, bounce if mario is small (pretty obvious)
LDA #!Bouncetype
BNE Pow

LDA #$0F
TRB $9A
TRB $98 ; clear low nibble of X and Y position of contact
PHY
PHB ;preserve current bank
LDA #$02 ;push 02
PHA
PLB ;bank = 02
JSR iwannabounce ; block bounce sprite routine, ripped of SMB3 Brick bin file.
PLB ;restore bank
PLY

MarioAbove:
MarioSide:
MarioCorner:
HeadInside:
BodyInside:
MarioFireBall:
Pow:

RTL ; return

SpriteV:
LDA $14AD
AND.b #!Bricktype-$01 ; depends on bricktype
BRA !SMB3coin<<2
BNE Pow ; same thing
BRA $02
BEQ Pow
LDA $14C8,x
CMP #$09 ; do nothing if not a carryable sprite (since when you kick a shell upward, it is this status...)
BNE Pow
LDA $AA,x
BPL Pow ; only a rising sprite

LDA $0F
PHA ; if you don't do this, the sprite will be move slightly sideways

LDA $0A ; $0A-D hold the x/y of sprite contact
AND #$F0 ; have to clear the low nybble much like $98-9B
STA $9A
LDA $0B
STA $9B
LDA $0C
AND #$F0
STA $98
LDA $0D
STA $99
PHB
LDA #$02
PHA
PLB
LDA #$00 ;set to 0 for normal explosion, 1 for rainbow (throw blocks)
JSL $028663 ;breaking effect
PLB
LDA #$07
STA $1DFC
LDA #$02 ; Replace block with blank tile
STA $9C
JSL $00BEB0 ;ripped from another block, "shatter with sprite" or something

STZ $AA,x ; not sure it is usefull anyway
PLA
STA $0F ; explained above

JSR SpriteBlockInteract ; cause koopas and cie to be kicked if you break the block
JSR Points ; give 10 points

RTL

MarioCape:
LDA $14AD
AND.b #!Bricktype-$01 ; depends on bricktype
BRA !SMB3coin<<2
BNE Pow ; again
BRA $02
BEQ Pow
MarioBig:
LDA #$0F
TRB $9A
TRB $98 ; clear low nibble of X and Y position of contact

PHB
LDA #$02
PHA
PLB
LDA #$00 ;set to 0 for normal explosion, 1 for rainbow (throw blocks)
JSL $028663 ;breaking effect
PLB
LDA #$07
STA $1DFC
LDA #$02 ; Replace block with blank tile
STA $9C
JSL $00BEB0

JSR SpriteBlockInteract ; cause koopas and cie to be kicked if you break the block, again.
JSR Points ; give 10 points

return:
RTL

SpriteH:
LDA $14AD
AND.b #!Bricktype-$01 ; depends on bricktype
BRA !SMB3coin<<2
BNE return ; bah, you know...
BRA $02
BEQ return
LDA $14C8,x
CMP #$0A
BNE return ; only a kicked sprite

LDA $0A ; $0A-D hold the x/y of sprite contact
AND #$F0 ; have to clear the low nybble much like $98-9B
STA $9A
LDA $0B
STA $9B
LDA $0C
AND #$F0
STA $98
LDA $0D
STA $99
PHB
LDA #$02
PHA
PLB
LDA #$00 ;set to 0 for normal explosion, 1 for rainbow (throw blocks)
JSL $028663 ;breaking effect
PLB
LDA #$07
STA $1DFC
LDA #$02 ; Replace block with blank tile
STA $9C
JSL $00BEB0

LDY #$10 ;act like tile 130 to make the shell go backward
LDA #$30
STA $1693
JSR Points ; give 10 points
JSR SpriteBlockInteract ; cause koopas and cie to be kicked if you break the block. In this, case, I think it sucks, but eh, it is an emulation.

RTL


;;;;;;;;;;;;;;;;;;;ripped from the bin file, which was already ripped (and edited a bit) from $028818;;;;;;;
iwannabounce:
LDX #$00
LDY #$03 ; used for indexing
LDA $8789,x
STA $1901,y ; YXPPCCCT data of bounce sprite that is being shown
TXA
INC A ; LDA #$01 ?
STA $1699,y ; Block Bounce Sprite Image Table
LDA #$01 ;seems useless
STA $169D,y ; Block Bounce Sprite ? Table
LDA $9A
STA $16A5,y ; Block Bounce Sprite Xpos Low Byte Table
LDA $9B
STA $16AD,y ; Block Bounce Sprite Xpos High Byte Table
LDA $98
STA $16A1,y ; Block Bounce Sprite Ypos Low Byte Table
LDA $99
STA $16A9,y ; Block Bounce Sprite Ypos High Byte Table
LDA #$08
STA $16C5,y ; Block Bounce Sprite Bouncing Flag Table
LDA #$00
STA $16C1,y ; Block Bounce Sprite Turns Into Table

LDA $1933
LSR A
ROR A
STA $08
LDX #$00
LDA $873A,x
STA $16B1,y ; Block Bounce Sprite YSpeed Table
LDA $873E,x
STA $16B5,y ; Block Bounce Sprite XSpeed Table
TXA
ORA $08 ; seems useless too
STA $16C9,y ; Block Bounce Sprite ? Table
JSR SpriteBlockInteract
RTS


SpriteBlockInteract:
LDY #$03
ALoop1:
LDA $16CD,y ; Block Bounce Sprite Exists Flag Table
BEQ Missing4bytes
DEY
BPL ALoop1
INY ; equal to LDY #$00
Missing4bytes:
LDA $9A
STA $16D1,y
LDA $9B
STA $16D5,y
LDA $98
STA $16D9,y
LDA $99
STA $16DD,y
LDA $1933
BEQ Missing1Ebytes
LDA $9A
SEC
SBC $26
STA $16D1,y
LDA $9B
SBC $27
STA $16D5,y
LDA $98
SEC
SBC $28
STA $16D9,y
LDA $99
SBC $29
STA $16DD,y
Missing1Ebytes:
LDA #$01
STA $16CD,y ; Block Bounce Sprite Exists Flag Table
LDA #$06
STA $18F8,y ; unknown!
RTS

Points:
LDA $0DB3
ASL A
ADC $0DB3
TAX
LDA $0F34,x
CLC
ADC #$01
STA $0F34,x
LDA $0F35,x
ADC #$00
STA $0F35,x
LDA $0F36,x
ADC #$00
STA $0F36,x
RTS


ich meine natürlich die Animation die entsteht, wenn der kleine mario unter den block springt.

wenn das ein sprite ist, dann weiss ich leider nicht, wie man das ändert.

habe mich mit sprites noch nicht beschäftigt. vielleicht kann mir jemand dabei helfen