Der Sprite an sich klappt schonmal, danke dafür! (Besser als ein dummer Generator)
Allerdings funktioniert er nicht in zusammenhang mit den Block. Werde wohl einfach mit Teleportblöcken tricksen müssen.
Spiel hängt sich auf. Aber trotzdem danke für den Versuch!
Edit: Plötzlich klappts, hab die falsche ASM Datei eingefügt..

.. Zünni? Du bist genial
Zitat von EliteBellic: Gibt es einen Banzai Bill Generator ?
Ich suche nämlich danach..
Hier ein Shooter von SMWC (Hab die Spritenummer schon nachgetragen).
ASM Datei:
Code;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; sprite code JSL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dcb "INIT"
dcb "MAIN"
PHB
PHK
PLB
JSR SPRITE_CODE_START
PLB
RTL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; main bullet bill shooter code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RETURN2 RTS ; return
SPRITE_CODE_START LDA $17AB,x ; \ return if it's not time to generate
BNE RETURN2 ; /
LDA #$40 ; \ set time till next generation = 40
STA $17AB,x ; /
LDA $178B,x ; \ don't generate if off screen vertically
CMP $1C ; |
LDA $1793,x ; |
SBC $1D ; |
BNE RETURN2 ; /
LDA $179B,x ; \ don't generate if off screen horizontally
CMP $1A ; |
LDA $17A3,x ; |
SBC $1B ; |
BNE RETURN2 ; /
LDA $179B,x ; \ ?? something else related to x position of generator??
SEC ; |
SBC $1A ; |
CLC ; |
ADC #$10 ; |
CMP #$10 ; |
BCC RETURN2 ; /
JSL $02A9DE ; \ get an index to an unused sprite slot, return if all slots full
BMI RETURN2 ; / after: Y has index of sprite being generated
GENERATE_SPRITE LDA #$09 ; \ play sound effect
STA $1DFC ; /
LDA #$01 ; \ set sprite status for new sprite
STA $14C8,y ; /
LDA #$9F ; \ set sprite number for new sprite
STA $009E,y ; /
LDA $179B,x ; \ set x position for new sprite
STA $00E4,y ; |
LDA $17A3,x ; |
STA $14E0,y ; /
LDA $178B,x ; \ set y position for new sprite
SEC ; | (y position of generator - 1)
SBC #$01 ; |
STA $00D8,y ; |
LDA $1793,x ; |
SBC #$00 ; |
STA $14D4,y ; /
PHX ; \ before: X must have index of sprite being generated
TYX ; | routine clears old sprite values...
JSL $07F7D2 ; | ...and loads in new values for the 6 main sprite tables
PLX ; /
LDA #$08 ;
STA $14C8,y ;
LDA $00
PHA
LDA $1783,x
AND #$40
BEQ LEFT
LDA $178B,x ; check y position and shoot up or down accordingly
AND #$10 ; todo: change this check
BNE SHOOT_UP2
LDA #$03
BRA STORE
SHOOT_UP2 LDA #$03
BRA STORE
LEFT LDA $178B,x ; check y position and shoot up or down accordingly
AND #$10 ; todo: change this check
BNE SHOOT_UP
LDA #$01
BRA STORE
SHOOT_UP LDA #$01
STORE STA $00C2,y ; 06 for down, 07 for up
STA $00
JSR SUB_SMOKE2
PLA
STA $00
RETURN RTS ; return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; display smoke effect for diagonal shooter
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;up left, down right, down left, up right,
Y_OFFSET dcb $00,$00,$00,$00,$FA,$04,$04,$FA
X_OFFSET dcb $00,$00,$00,$00,$04,$04,$FA,$FA
SUB_SMOKE2 LDY #$03 ; \ find a free slot to display effect
FINDFREE LDA $17C0,y ; |
BEQ FOUNDONE ; |
DEY ; |
BPL FINDFREE ; |
RTS ; / return if no slots open
FOUNDONE LDA #$01 ; \ set effect graphic to smoke graphic
STA $17C0,y ; /
LDA $178B,x ; \
PHX ; |
PHA ; |
LDA $00
TAX
PLA ; | set smoke y position based on direction of shot
CLC ; |
ADC Y_OFFSET,x ; |
STA $17C4,y ; /
PLX
LDA #$1B ; \ set time to show smoke
STA $17CC,y ; /
LDA $179B,x ; \ load generator x position
PHX
PHA
LDA $00
TAX
PLA
CLC ; |
ADC X_OFFSET,x
STA $17C8,y ; /
PLX
RTS
CFG Datei:
Code03
FF
FF FF FF FF FF FF
FF FF
xxx.asm
xxx mit den Namen der ASM Datei ersetzen.
Anmerkung: Schießt nur nach Links, da Banzai Bill nicht spawnt, wenn man von Rechts kommt.
Coole Idee!
Hab mir mal eins drangehangen.
Frage:
Warum funktioniert dieser Block nicht? Er soll dafür sorgen, dass ein Buzzy Beetle (Sprite Nr.11) als einziger passieren darf.
Er prallt aber einfach ab.. Hier mal der Code:
Code;Make it act like tile 130
!Sprite = $11 ; To let pass
db $42
JMP n : JMP n : JMP n
JMP y : JMP y : JMP n : JMP n
JMP n : JMP n : JMP n
y:
LDA $9E,x ;\
CMP #!Sprite ; | Add more of these if you want more sprites to be able to pass
BEQ Pass ;/
n:
RTL
Pass:
LDY #$00 ;act like tile 130
LDA #$25
STA $1693
RTL
Zitat von Vanilla Hacker: Wie macht man das mit dem neuen Lunar Magic?
Eigentlich genau so?
Du packst die gewünschte GFX z.B. in BG2, öffnest den Map16 Editor und den zugehörigen 8x8 Tile-Selector, wählst ein freies Feld und gibtst die "koordinaten" der gewünschten Grafiken an.
geschrieben am 10.01.2013 17:00:42 in
Laptop Hey Leute.
Seit Gestern will mein Laptop akku wohl nicht mehr..
Schon vor ein paar Tagen hat es damit angefangen, dass der Akku wohl nicht mehr richtig Laden wollte. Ich musste z.B. das Netzteil nochmal komplett aus der Steckdose nehmen, damit ich wieder aufladen konnte. Das funktioniert seit Gestern aber gar nicht mehr..
Es lief so ab: Es kam unten die Meldung, dass nur noch wenige Prozente verbleiben und ich meinen Akku an das Netzteil anschließen soll. Hab ich natürlich gemacht, aber es at sich nichts getan (Die Kontrollleuchte fing auch nicht an zu leuchten).
Hab den Akku später mal rausgenommen, etwas entstaubt und wieder eingesetzt, aber es hat nicht geholfen. Hab dann das Netzteil nochmal aus der Steckdose genommen, vom Laptop abgeschlossen und beide erstmal über Nacht ruhen lassen. Ich dachte mir vlt. geht es Morgen ja wieder (Kann ja sein.. o.o), aber nein.
Der Laptop ist jetzt natürlich leer und lässt sich nicht mehr anschalten, weshalb ich an unseren alten Computer gehen muss (Der sich schon aufhängt, wenn ich 2 Tabs öffne). Ich habe eig. wenig Lust auf Verdacht einen neuen Akku zu kaufen. Garantie hab ich noch, aber vlt. kann man mir ja helfen (vermutlich nicht).
Mfg.
Steht im Readme.
CodeNow to insert it to the actual level:
1. Pick your level you want the effect to be used, e.g. level105
2. In levelinit.asm or levelmain.asm serch for level105
3. You'll most likely see a basic test code, replace that with a RTS, if
there's not one yet.
4. Now get your offset you inserted your HDMA effect to, e.g. $228000
5. Add $08 bytes (caused by the RATS tag) and it will become $228008
6. In the level105 field add this "JSL $228008" without the ""
7. Insert level.asm and the HDMA file you picked via Xkas.
Edit: $228000 steht für Freespace, kannst die Adresse beliebig ändern. Wenn du noch andere HDMA Effekte aus seinem Pack wählst, dann musst du denen immer verschiede Adressen geben.
Zitat von Reggiamoto: Ich hab folgendes Problem: Kann jemand einen Patch machen, der verhindert, dass man auf den Gittern (Etwa die in Iggy's Castle) ganz easy zig 1-Ups Bekommt? (Wenn m,an auf einen Koopa springt, sich am Gitter festhält,das immer wiederholt...)
Öhh.. versteh ich das richtig? Du hast einen Gegner direkt unter dem Gitter platziert und man kann sich daran Leben farmen, da man immer wieder draufspringen kann? Oder wie?
ZitatIch will einfach, dass das Gitter wie Boden reagiert
Dann mach das doch mit den Map16 Editor.
Zitat von jakoob14: Das ist komisch, denn ich hab z.b. schonmal einen Hack gesehen, in dem in einem Levelabschnitt die großen und die kleinen Maulwürfe enthalten waren
Du nimmst dir eine ExGFX Datei und fügst die Grafiken der gewünschten Gegner ein. Die Grafiken müssen an den selben Positionen, wie in der Original GFX sein (weshalb auch nicht alle Kombinationen von Gegnern möglich sind). Dann fügst du die ExGFX ein und tust sie, je nach Gegnern, in einen der Slots SP3 oder SP4 (Roter Giftpilz).
Ich würde gerne mit bewerten.
Hallo. Brauche nochmal Hilfe..
Habe einen 4-stelligen Coin Counter von SMWC runtergeladen. Der auch funktioniert, allerdings hätte ich gerne eine Sache geändert.
Und zwar das soll das Coin-Symbol (siehe Bild) am liebsten komplett verschwinden, oder eins nach rechts verschoben werden.

Für so ein kleines Bild brauchst du keinen Spoiler.
Hier mal der Ausschnitt des ASM Codes, der sich mit der Status Bar befasst:
Codeorg $008CB2
db $3C ; \
db $FC ; |
db $38 ; |
db $FC ; |
db $38 ; |
db $FC ; |
db $20 ; | Tilemap in status bar.
db $FC ; |
db $20 ; |
db $FC ; |
db $38 ; |
db $FC ; |
db $38 ; |
db $FC ; |
db $20 ; /
org $008CE7
db $2E ; \ Change $FC to $2E if you want the coin sign in front.
db $3C ; |
db $00 ; |
db $38 ; |
db $00 ; |
db $38 ; | More tilemap data.
db $00 ; |
db $38 ; |
db $00 ; |
db $38 ; |
db $00 ; |
db $38 ; |
db $00 ; |
db $38 ; |
db $FC ; |
db $3C ; /
org $008EE5
Falls da was fehlt, hier wäre auch der komplette Code:
Code;@xkas
header
lorom
;=====================================;
;POINT THIS TO FREE SPACE!!!!!!!!!!!!!;
;=====================================;
!RAM_DecCoins = $7F969E ;
!ShowZeroes = $00 ; 00 - don't show leading zeroes, anything else - show them
org $10EEE0 ; <--- POINT TO FREESPACE!! REPLACE XXXXXX WITH SNES ADDRESS.
!RatsTag = RoutineEnd-RoutineStart ; RATS TAG.
db "STAR" ; DON'T REMOVE
dw !RatsTag-$01 ; THIS IF YOU WANT
dw !RatsTag-$01^$FFFF ; TO PROTECT THIS DATA.
RoutineStart: ; Don't remove label
LDA !RAM_DecCoins
BEQ EndDec
LDA $0F34
ORA $0F35
BEQ EndDec
REP #$20
LDA !RAM_DecCoins
DEC
STA !RAM_DecCoins
SEP #$20
LDA #$FF
DEC $0F34
CMP $0F34
BNE EndDec
DEC $0F35
EndDec:
LDA $13CC
BEQ NoInc
IncCoins:
DEC $13CC
REP #$20
LDA $0F34
CMP #$270F
BCC NotMax
LDA #$270F
STA $0F34
SEP #$20
BRA EndInc
NotMax:
SEP #$20
INC $0F34 ; $0F34 = Lowest 256 values.
BNE EndInc
INC $0F35 ; $0F35 = Lowest 65536 values.
EndInc:
LDA $00
JML $008F32
NoInc:
JML $008F3B
ZeroDec:
STA $7F8000
LDA #$0000
STA !RAM_DecCoins
RTL
SaveSRAMRoutine:
JSR GetSaveFile
LoadScoreData:
LDA $0F34,y ; Transfer coin counter data over...
STA $70079F,x ; to SRAM data. ($7007FD - $7007FF)
INX
INY
CPY #32
BCC LoadScoreData
LDX $010A
LDA $009CCB,x
RTL
LoadSRAMRoutine:
PHX
PHY
SEP #$10
JSR GetSaveFile
LoadSRAMData:
LDA $70079F,x ; Transfer SRAM data...
STA $0F34,y ; over to coin counter data.
INX
INY
CPY #32
BCC LoadSRAMData
REP #$10
PLY
PLX
LDA $700000,x
RTL
STZSRAMWhenGameOver:
JSR GetSaveFile
StoreZeroIntoSRAM:
LDA #$00
STA $0F34,y ; Set coins to zero.
STA $70079F,x ; Set coins in SRAM to zero.
INX
INY
CPY #32
BCC StoreZeroIntoSRAM
LDA #$0A
STA $1DFB
RTL
GetSaveFile:
LDA $010A
ASL
ASL
ASL
ASL
ASL
TAX
LDY #0
RTS
ZeroCoins:
LDA #!ShowZeroes
BNE PutZero
LDA #$FC ; hijacked routine
STA $0F29,x
LDA $0F34
ORA $0F35
ORA $0F36 ; if you have 0 coins...
BNE DontStoreZero ; put "0" on the status bar
STZ $0F2E ; 0 for the first digit
DontStoreZero:
RTL
PutZero:
CPX #$02
BCC BlankAtStart
STZ $0F29,x
RTL
BlankAtStart:
LDA #$FC
STA $0F29,x
RTL
RoutineEnd: ; Don't remove label
;=====================================;
; Values that edit status bar & score.;
;=====================================;
org $008CB2
db $3C ; \
db $FC ; |
db $38 ; |
db $FC ; |
db $38 ; |
db $FC ; |
db $20 ; | Tilemap in status bar.
db $FC ; |
db $20 ; |
db $FC ; |
db $38 ; |
db $FC ; |
db $38 ; |
db $FC ; |
db $20 ; /
org $008CE7
db $2E ; \ Change $FC to $2E if you want the coin sign in front.
db $3C ; |
db $00 ; |
db $38 ; |
db $00 ; |
db $38 ; | More tilemap data.
db $00 ; |
db $38 ; |
db $00 ; |
db $38 ; |
db $00 ; |
db $38 ; |
db $00 ; |
db $38 ; |
db $FC ; |
db $3C ; /
org $008EE5
JSL ZeroCoins
NOP
org $00802A
JSL ZeroDec
;STZ $0F29,x ; <--
org $008F1D
JML RoutineStart
LDA $00
BRA CycleSkip ;\ Skip for reducing cycles
NOP ; |
NOP ; | Useless
NOP ; |
NOP ;/
CycleSkip:
org $008F7E
BRA Skip ; \ Skip to save cycles.
NOP ; |
NOP ; |
NOP ; |
NOP ; / There isn't written to coin total.
Skip:
org $009BCC
JSL SaveSRAMRoutine ; Save data to SRAM!
NOP
NOP
org $009D14
JSL LoadSRAMRoutine ; Load data from SRAM!
org $009E4E
NOP ; Remove the first ; if you...
NOP ; want to disable the score being...
NOP ; deleted when getting to the Game Over screen.
org $009E56
NOP ; Remove the first ; if you...
NOP ; want to disable the score being...
NOP ; deleted when getting to the Game Over screen.
org $00D0DD
JSL STZSRAMWhenGameOver
NOP
org $028766
NOP ; \
NOP ; | Disable score
NOP ; /
org $028770
NOP ; \
NOP ; | Disable score
NOP ; /
org $02AE21
BRA SkipUseless ; \ Skip to save cycles.
NOP ; |
NOP ; |
NOP ; |
NOP ; | Disable score
NOP ; |
NOP ; |
NOP ; |
NOP ; |
NOP ; |
NOP ; /
NOP
NOP
NOP
NOP ; \ Yeah more semi-colons and comments...
NOP ; / Etc.
NOP
NOP
NOP
SkipUseless:
org $05CEF9
NOP ; \
NOP ; |
NOP ; |
NOP ; |
NOP ; |
NOP ; |
NOP ; | Disable score being added at level end.
NOP ; |
NOP ; |
NOP ; |
NOP ; |
NOP ; /
Hoffe jemand kann mir helfen.
Zitatdb $2E ; \ Change $FC to $2E if you want the coin sign in front.
Hatte ich mittlerweile mal richtig gelesen bzw. verstanden.
Aber danke, ist richtig so!
Zitat von Reggiamoto: ??? Das versteh ich nicht

Ich meinte nur, in Terra Stripe das Wasser unsichtbar zu machen :/
Ich denke er meint Kooooopa und nicht dich.
Zitat von kooooopa: Wie bekomme ich Layer 3 Wasser unsichtbar? Also es soll noch da sein, aber halt nicht sichtbar.
Vlt. das Wasser einfach aus der GFX entfernen (dann ist es aber in jedem Level weg)? Wozu brauchst du das bitte?
Kurze Anmerkung: Bewertungen sind abgeschickt.
Zitat von Reggiamoto: @Bladey: Ich finds ein bisschen unfair, dass es für die OW noch extrapunkte gab, obwohl die nicht mitbewertet werden sollte

Ich dachte für sowas gibt es die Extra Punkte.. Das nächste mal mach ich es besser.
Zitat von Vanilla Hacker: Welches Tile (Bitte die Nummer ) Verursacht einen Instantkill von jeder seite.
Benutz einfach diesen Custom Block:
Codedb $42
JMP MarioBelow : JMP MarioAbove : JMP MarioSide
JMP SpriteV : JMP SpriteH
JMP Cape : JMP Fireball
JMP MarioCorner : JMP MarioHead : JMP MarioBody
MarioBelow:
MarioAbove:
MarioSide:
JSL $00F606
SpriteV:
SpriteH:
Cape:
Fireball:
MarioCorner:
MarioHead:
MarioBody:
RTL
Im Original Spiel gibt es kein (vernünftigen) Instantkill Block.
Hab auch mal wieder eine Frage.
Habe einen Custom Block erstellt, doch habe ein kleines Problem.
Der Block soll die etwas verbuggte SMW Lava ersetzen, was an sich auch gut funktioniert. Mario wird instant getötet und Items versinken drinnen.. alle außer eins!
Wenn ich einen Baby-Yoshi hereinwerfe, versinkt dort nicht der Yoshi, sondern ein Grüner Turn-Block. o-o
Baby-Yoshi gilt dann trotzdem als getötet, aber es sieht einfach bescheuert aus. Hoffe jemand findet den Fehler.
Codedb $42
JMP MarioBelow : JMP MarioAbove : JMP MarioSide
JMP SpriteV : JMP SpriteH
JMP Cape : JMP Fireball
JMP MarioCorner : JMP MarioHead : JMP MarioBody
MarioBelow:
MarioAbove:
MarioSide:
JSL $00F606
RTL
SpriteV:
SpriteH:
LDA #$05
STA $14C8,X
LDA #$40
STA $1558,x
Cape:
Fireball:
MarioCorner:
MarioHead:
MarioBody:
RTL
Danke für die schnelle Hilfe.