Falling leaves von Ladida - Hilfe

geschrieben am 30.10.2011 22:47:50
( Link )
Ich weiß ist zwar etwas lame das zu fragen,aber fragen schadet ja nicht.
Ich hab ein Problem mit dem Cluster/Sprite Falling leaves.
Denn:
1.Weiß ich nicht zu welcher Art Cluster/Sprites gehören also wohin damit?
Zu Sprites,Genarators..
2.Bin ich zu Blöd diese Asm Files zu editieren,
weil ich ein Sandsturm artiges sprite haben will das nach rechts,oben,links wie auch immer geht.
Allein schon das es die ganzen Bildschirm bedeckt und die geschwindigkeit
dies einzustellen lässt mich bis zum erbrechen rätseln,da ich nicht die asm Sprache behersche.
(nur einfache Begriffe)

Die erklärung steht zwar ungefefähr mit dabei beim Fileload aber die bringt mich nicht viel weiter
da sie nur die Oberfläche dieses Gipfels erklärt.
Text:
Steht beim downloadlink anzeigen
When the sprite is placed in a level, it will generate falling leaves, or snow, or whatever you want. Insert flowers.asm with Alcaro's Cluster Spritetool, and flowerspawn.asm and flowerspawn.cfg with romi's spritetool. Speed, the number of falling items, the tile used, etc. are all configurable within the asm files. No graphics included. Based off of an early version of Roy's Spike Hell cluster sprite. Give credit to him, me too if possible.


Und in mit den asm files kann ich nichts anfangen da ich nicht
kapiere wie man die Geschwindigkeit usw setz,also im Grunde genommen verstehe ich nur Bahnhof.
Asm files:
flowers.asm:
Code
;----------------------------------------------------;
; BG Flowers - by Ladida ;
; Can be whatever you want, just change the graphics ;
; Edit of Roy's original Spike Hell sprite ;
;----------------------------------------------------;

!FlowerTile = $6D ;Tile # of the flower petal


SpeedTableY:
db $01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02 ; Speed table, per sprite. Amount of pixels to move down each frame. 00 = still, 80-FF = rise, 01-7F = sink.

SpeedTableX:
db $FD,$FF,$FE,$FF,$FD,$FF,$FE,$FF,$FD,$FF,$FE,$FF,$FD,$FF,$FE,$FF,$FD,$FF,$FE,$FF ; Speed table, per sprite. Amount of pixels to move down each frame. 00 = still, 80-FF = rise, 01-7F = sink.

SpeedTableXTwo:
db $FF,$FE,$FD,$FE,$FF,$FE,$FD,$FE,$FF,$FE,$FD,$FE,$FF,$FE,$FD,$FE,$FF,$FE,$FD,$FE ; Speed table, per sprite. Amount of pixels to move down each frame. 00 = still, 80-FF = rise, 01-7F = sink.

OAMStuff:
db $20,$24,$28,$2C,$80,$84,$88,$8C,$B0,$B4,$B8,$BC,$C0,$C4,$C8,$CC,$E4,$E8,$EC,$F0 ; These are all in $02xx

Properties:
db $34,$74,$B4,$F4,$34,$74,$B4,$F4,$34,$74,$B4,$F4,$34,$74,$B4,$F4,$34,$74,$B4,$F4 ; Properties table, per sprite. YXPPCCCT.

PropertiesTwo:
db $B4,$F4,$34,$74,$B4,$F4,$34,$74,$B4,$F4,$34,$74,$B4,$F4,$34,$74,$B4,$F4,$34,$74 ; Properties table, per sprite. YXPPCCCT.

IncrementByOne:
LDA $1E02,y ; \ Increment Y position of sprite.
INC A ; |
STA $1E02,y ; |
SEC ; | Check Y position relative to screen border Y position.
SBC $1C ; | If equal to #$F0...
CMP #$F0 ; |
BNE ReturnAndSuch ; |
LDA #$01 ; | Appear.
STA $1E2A,y ; /

ReturnAndSuch:
RTS

Main: ;The code always starts at this label in all sprites.
LDA $1E2A,y ; \ If meant to appear, skip sprite intro code.
BEQ IncrementByOne ; /

SkipIntro:
LDA $9D ; \ Don't move if sprites are supposed to be frozen.
BNE Immobile ; /
LDA $14
AND #$02
BEQ +
LDA $1E02,y ; \
CLC ; |
ADC SpeedTableY,y ; | Movement.
STA $1E02,y ; /
+

LDA $14
LSR #5
AND #$01
BEQ +
LDA $1E16,y
CLC
ADC SpeedTableX,y
BRA ++
+
LDA $1E16,y
CLC
ADC SpeedTableXTwo,y
++
STA $1E16,y

Immobile: ; OAM routine starts here.
LDX.w OAMStuff,y ; Get OAM index.
LDA $1E02,y ; \ Copy Y position relative to screen Y to OAM Y.
SEC ; |
SBC $1C ; |
STA $0201,x ; /
LDA $1E16,y ; \ Copy X position relative to screen X to OAM X.
SEC ; |
SBC $1A ; |
STA $0200,x ; /
LDA #!FlowerTile ; \ Tile
STA $0202,x ; /
LDA $14
LSR #2
AND #$01
BEQ +
LDA Properties,y
BRA ++
+
LDA PropertiesTwo,y
++
STA $0203,x
PHX
TXA
LSR
LSR
TAX
LDA #$00
STA $0420,x
PLX
LDA $18BF
ORA $1493
BEQ ReturnToTheChocolateWhatever ; Change BEQ to BRA if you don't want it to disappear at generator 2, sprite D2.
LDA $0201,x
CMP #$F0 ; As soon as the sprite is off-screen...
BCC ReturnToTheChocolateWhatever
LDA #$00 ; Kill it.
STA $1892,y ;

ReturnToTheChocolateWhatever:

flowerspawn.asm:
Code
!SpikeCount = $09		; Amount of sprites to fall down, -1. Values outside of 00-13 are not recommended.
!ClusterSpriteNum = $09 ; Cluster sprite number

print "INIT ",pc

PHY ; \ Wrapper.
PHB ; |
PHK ; |
PLB ; /

LDY #!SpikeCount
-
LDA #!ClusterSpriteNum
STA $1892,y
LDA InitXY,y ; \ Initial X and Y position of each sprite.
PHA ; | Is relative to screen border.
AND #$F0 ; |
STA $1E16,y ; |
PLA ; |
ASL #4 ; |
STA $1E02,y ; |
DEY ; | Loop until all slots are done.
BPL - ; /
LDA #$01 ; \ Run cluster sprite routine.
STA $18B8 ; /

PLB ;
PLY ;
RTL ; Return.

InitXY:
db $06,$45,$9E,$E2,$A7,$BC,$59,$40,$61,$F5,$D6,$24,$7B,$33,$C6,$0B,$00,$39,$70,$A1
; Initial X and Y position table of sprites.
; Relative to screen border.
; Format: $xy

print "MAIN ",pc
STZ $14C8,x
RTL


Ich hoffe mir kann jemand erklären wie ich das genauso
modifizieren kann wie ich es möchte.
Habe dies jetzt mal nicht im Fortgeschrittenenbereich geschrieben
da ich verscheinlich mal wieder zu blöd bin und den Goldenen Klumpen vor meiner Nase mal wieder übersehen habe .
>we live in a society
geschrieben am 31.10.2011 15:00:10
( Link )
1. Du brauchst das Clusterspritetool und das normale
2. Du fügst zuerst "flower.asm" ein (im Clusterspritetool)
3. Dann "flowerspawn.asm" ein (im normalen Spritetool)

Das hätten wir schonmal

Dann kannst du
Code
SpeedTableY:
db $01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02 ; Speed table, per sprite. Amount of pixels to move down each frame. 00 = still, 80-FF = rise, 01-7F = sink.

SpeedTableX:
db $FD,$FF,$FE,$FF,$FD,$FF,$FE,$FF,$FD,$FF,$FE,$FF,$FD,$FF,$FE,$FF,$FD,$FF,$FE,$FF ; Speed table, per sprite. Amount of pixels to move down each frame. 00 = still, 80-FF = rise, 01-7F = sink.


Hier die Bewegung ändern (Einfach ausprobieren, für Sandsturm würde ich sagen: X ändern, das es schneller wird
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...
geschrieben am 01.11.2011 6:19:35
( Link )
Zitat von Shog:
1. Du brauchst das Clusterspritetool und das normale
2. Du fügst zuerst "flower.asm" ein (im Clusterspritetool)
3. Dann "flowerspawn.asm" ein (im normalen Spritetool)

Das hätten wir schonmal

Dann kannst du
Code
SpeedTableY:
db $01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02 ; Speed table, per sprite. Amount of pixels to move down each frame. 00 = still, 80-FF = rise, 01-7F = sink.

SpeedTableX:
db $FD,$FF,$FE,$FF,$FD,$FF,$FE,$FF,$FD,$FF,$FE,$FF,$FD,$FF,$FE,$FF,$FD,$FF,$FE,$FF ; Speed table, per sprite. Amount of pixels to move down each frame. 00 = still, 80-FF = rise, 01-7F = sink.


Hier die Bewegung ändern (Einfach ausprobieren, für Sandsturm würde ich sagen: X ändern, das es schneller wird


Immer wenn ich das Level Starte und ich habe das flowerspawn sprite in dem Level stürtzt es ab.
Was habe ich gemacht:
flower.asm als 07 in die clusterspriteliste und eingefügt.
flowerspawn.asm als 06 in die spriteliste und eingefügt.

Flowerasm geht (fällt als undefinierte gfx vom Himmel) aber es fehlt halt der spawn dazu.
Weißt du was ich falsch gemacht habe?

Edit:Habe flowerspawn.asm in Genarators reingetan unter D4.
Jetzt stürtzt das Spiel zwar nicht mehr ab,aber es verhält sich genauso wie flower.asm:
es fällt als undefinierte Gfx einmal von der Decke und das wars.
Habe auch schon alle extrabit möglichkeiten durchgenommen doch nichts hat zum gewünschten Ergebnis geholfen.
>we live in a society
geschrieben am 01.11.2011 8:01:51
( Link )
Es gibt über cluster sprites ein tut auf smwcentral. Vielleicht hilft das ja.
http://www.smwcentral.net/?p=viewthread&t=25767
geschrieben am 01.11.2011 8:33:31
( Link )
Zitat von kooooopa:
Es gibt über cluster sprites ein tut auf smwcentral. Vielleicht hilft das ja.
http://www.smwcentral.net/?p=viewthread&t=25767


Naja mit meinen Englisch Kentnissen kann das ja was werden. ^^"
Werde es mir troztdem reindrücken,danke für die Hilfe.
Will aber noch auf die Antwort von Shog warten.
>we live in a society
geschrieben am 01.11.2011 8:48:28
( Link )
Genau das Problem mit dem Englisch hatte ich auch.
Hab nen Kumpel angehauen der es mir übersetzt hat.
Er kennt sich zwar überhaupt nicht mit smw aus, daher sind manche Begriffe falsch, aber wenn du es haben willst sag es mir.
geschrieben am 02.11.2011 23:04:29
( Link )
Ihr müsst im Flower.asm die genau selbe Nummer eingeben, wie ihr auch für das Clutrerspritetool verwendet habt:

Zitat

!ClusterSpriteNum = $10 ; Cluster sprite number


Bei mir beispielsweise war es 10. Ändert es doch bei euch auch bei 10, und setzt sowohl den Clustersprite(im clsptool) als auch den normalen Sprite(spritetool) als "10" ein.
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...