Allgemeine Hex- und ASM-Fragen

geschrieben am 29.09.2013 13:35:16
( Link )
Bevor ich was falsch mache,
Meinst du den Chuck oder die Röhre?
EDIT: Bei Tweaker gibt's den Bit nicht, also hab ich die Röhre im CFG Editor geändert, und es ist nix passiert.
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 29.09.2013 17:22:31
( Link )
Hm, nee, die Chucks meinte ich. Sollte es eigentlich geben, das Bit.
geschrieben am 29.09.2013 18:14:48
( Link )
Also ich find es nicht.
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 08.11.2013 16:43:03
( Link )
Hallo, ich möchte einen SMB3-Brickblock einfügen. Er funktioniert zusammen mit einem Bounceblock-Patch auch wunderbar, bis auf einen Glitch: Wenn Mario, ob groß oder klein, die oberen Ecken des Blocks berührt, z. B. indem er auf dem Block steht und ganz an den Rand geht, zerspringt der Block einfach.

Hier der Code:
Code
;; Edit1754's SMB3 Brick v1.0.1
;; requires Block Bounce Unrestrictor patch
;; - fixes glitch with buster beetle's block and a few other things

JMP MarioBelow : JMP Return : JMP Return : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP Return


!BouncePalette = $08 ; 0-7/8-F
!BounceTile = $0040 ; 0000-01FF (top-left 8x8)

!ShatterType = $00 ; change this to $01 for throw-block-like shatter effect if you want

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

!RAM_M16Tbl = $7EC275 ; same as the other patch, to avoid using more RAM than necessary
!RAM_BounceTileTbl = $7EC271

!BPal = !BouncePalette&$07
!BTile = !BounceTile&$1FF

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MarioCape: JSR CheckIfCoin
NotSmall: JSR Shatter
JSR SpriteKiller
JSR Points
RTL

MarioBelow: JSR CheckIfCoin
LDA.b $19
BNE NotSmall
Small: LDX.b #$03
Loop: LDA.w $1699,x
BEQ FoundSlot
DEX
BPL Loop
DEC.w $18CD
LDA.b #%11111100
TRB.w $18CD
LDX $18CD
LDA $1699,x
CMP #$07
BNE FoundSlot
JSR ResetTurnblock
FoundSlot: LDA.b #%00001111
TRB.b $98
TRB.b $9A
LDA.b #$01
STA.w $1699,x
LDA.b #$00
STA.w $169D,x
LDA.b $98
STA.w $16A1,x
LDA.b $99
STA.w $16A9,x
LDA.b $9A
STA.w $16A5,x
LDA.b $9B
STA.w $16AD,x
LDA.b #$C0
STA.w $16B1,x
LDA.b #$00
STA.w $16B5,x
LDA.b #$FF ;
STA.w $16C1,x
LDA.b #$08
STA.w $16C5,x
LDA.w $1933
LSR
ROR
STA.w $16C9,x
LDA.b #!BounceTile
STA !RAM_BounceTileTbl,x
LDA.b #!BPal<<1
ORA.b #!BTile>>8
STA.w $1901,x
;PHX
TXA
ASL
TAX
REP #%00100000
LDA.b $03
STA.l !RAM_M16Tbl,x
SEP #%00100000
;PLX
JSR SpriteKiller
RTL

SpriteV: JSR CheckIfCoin
LDA.w $1686,x
AND.b #%00000100
BNE Return
LDA.w $14C8,x
CMP.b #$09
BCC Return
CMP.b #$0B
BCS Return
LDA.b $0F
CMP.b #$02
BEQ Return
SprMain: REP #%00100000
LDA.b $0A
STA.b $9A
LDA.b $0C
STA.b $98
LDA.b $0F
PHA ; counts as 2
SEP #%00100000
LDA.b $03
PHA
JSR Shatter
PLA
STA.b $03
PLA
STA.b $0F
PLA
STA.b $10
JSR SpriteKiller
JSR Points
Return: RTL

SpriteH: JSR CheckIfCoin
LDA.w $14C8,x
CMP.b #$0A
BEQ SprMain
RTL

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CheckIfCoin: LDA $1693
STA $00
STY $01
REP #%00100000
LDA $00
CMP.w #$0132 ; acts like used block
BEQ CoinPow ; don't behave like brick when POW enabled
CMP.w #$002B ; acts like coin
BEQ CoinNoPow ; don't behave like brick when POW disabled
SEP #%00100000
RTS
CoinPow: SEP #%00100000
LDA.w $14AD
BNE IsCoin
RTS
CoinNoPow: SEP #%00100000
LDA.w $14AD
BEQ IsCoin
RTS
IsCoin: PLA : PLA ; bypass RTS and head straight towards final RTL
RTL

Shatter: LDA.b #%00001111
TRB.b $98
TRB.b $9A
LDA.b #$02
STA.b $9C
JSL $00BEB0
PHB
LDA.b #$02
PHA
PLB
LDA.b #!ShatterType
PHY
JSL $028663
PLY
PLB
RTS

SpriteKiller: LDX #$03 ; disassembled from original smb3.bin
.C_8213 LDA $16CD,x
BEQ .C_821C
DEX
BPL .C_8213
INX
.C_821C LDA $9A
STA $16D1,x
LDA $9B
STA $16D5,x
LDA $98
STA $16D9,x
LDA $99
STA $16DD,x
LDA $1933
BEQ .C_8253
LDA $9A
SEC
SBC $26
STA $16D1,x
LDA $9B
SBC $27
STA $16D5,x
LDA $98
SEC
SBC $28
STA $16D9,x
LDA $99
SBC $29
STA $16DD,x
.C_8253 LDA #$01
STA $16CD,x
LDA #$06
STA $18F8,x
RTS

Points: LDA $0DB3 ; disassembled from original smb3.bin
ASL A
ADC $0DB3
TAX
LDA $0F34,X
CLC
ADC #$9D01
BIT $0F,X
LDA $0F35,X
ADC #$9D00
AND $0F,X
LDA $0F36,X
ADC #$9D00
ROL $0F,X
RTS

ResetTurnblock: LDA $9A ; from Custom Bounce Block patch's SMB3Brick.asm
PHA
LDA $9B
PHA
LDA $98
PHA
LDA $99
PHA
LDA $16A5,Y
STA $9A
LDA $16AD,Y
STA $9B
LDA $16A1,Y
CLC
ADC #$0C
AND #$F0
STA $98
LDA $16A9,Y
ADC #$00
STA $99
LDA $16C1,Y
STA $9C
LDA $04
PHA
LDA $05
PHA
LDA $06
PHA
LDA $07
PHA
JSL $00BEB0
PLA
STA $07
PLA
STA $06
PLA
STA $05
PLA
STA $04
PLA
STA $99
PLA
STA $98
PLA
STA $9B
PLA
STA $9A
RTS

Was müsste ich ändern, damit der Glitch verschwindet?
geschrieben am 10.11.2013 17:54:11
( Link )
für soide Blöcke sollte man immer die 3 zusatz offsets benutzen soweit ich weiß
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 04.01.2014 13:33:44
( Link )
Mal wieder Zeit für SMW gefunden und gleich das erste Problem...

Normale Bullet Bills fand ich langweilig, weswegen ich welche haben wollte, die explodieren, wenn sie eine Wand berühren.
Die gibt es auch auf SMWC. Eingefügt als Sprite 3C. Also meine .txt-Datei:
Code
3C Exploding_Bullet.cfg

Das ganze funktioniert auch.
Ich möchte das ganze gerne aber als Generator der diese verschießt. Da ich auf SMWC keine Dissembly des Bullet Bill Generators gefunden habe, dachte ich, ich nehm einfach nen Generator der custom Sprites spawnt. Der ist auch bei Sprite Tool schon mitgeliefert.
Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Sprite Generator, by mikeyk
;;
;; Description: This will generate a normal sprite or a custom sprite depending on the
;; first extra bit. Specify the actual sprite that is generated below
;;
;; NOTE: Trying to generate a sprite that doesn't exist will crash your game
;;
;; Uses first extra bit: YES
;; if the first extra bit is set a custom sprite will be generated
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SPRITE_TO_GEN = $38 ;only used if first extra bit is clear
CUST_SPRITE_TO_GEN = $20 ;only used if first extra bit is set

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; sprite code JSL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

dcb "INIT" ;generators don't have an init routine
dcb "MAIN"
PHB
PHK
PLB
JSR SPRITE_CODE_START
PLB
RTL

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; main sprite code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

EXTRA_BITS = $7FAB10
NEW_SPRITE_NUM = $7FAB9E

TBL_B2D0 dcb $F0,$FF
TBL_B2D2 dcb $FF,$00
TBL_B2D4 dcb $10,$F0

SPRITE_CODE_START LDA $14
AND #$3F
ORA $9D
BNE RETURN
JSL $02A9DE
BMI RETURN
TYX

LDA #$01 ; store sprite status
STA $14C8,x

LDA $18B9 ; check if first extra bit is set
AND #$40
BNE CUST

NORMAL LDA #SPRITE_TO_GEN ; store sprite number
STA $9E,x
JSL $07F7D2 ; reset sprite properties
BRA SHARED

CUST LDA #CUST_SPRITE_TO_GEN ; store custom sprite number
STA NEW_SPRITE_NUM,x
JSL $07F7D2 ; reset sprite properties
JSL $0187A7 ; get table values for custom sprite
LDA #$08 ; mark as initialized
STA EXTRA_BITS,x



SHARED JSL $01ACF9
AND #$7F
ADC #$40
ADC $1C
STA $D8,x
LDA $1D
ADC #$00
STA $14D4,x
LDA $148E
AND #$01
TAY
LDA TBL_B2D0,y
CLC
ADC $1A
STA $E4,x
LDA $1B
ADC TBL_B2D2,y
STA $14E0,x
LDA TBL_B2D4,y
STA $B6,x
RETURN RTS

Da ich meine Bullet Bills haben will habe ich die folgende Zeile:
Code
CUST_SPRITE_TO_GEN = $20    ;only used if first extra bit is set

in:
Code
CUST_SPRITE_TO_GEN = $3C    ;only used if first extra bit is set

geändert. Meine txt.-Datei sieht dann so aus:
Code
3C Exploding_Bullet.cfg
D5 BOOOM.cfg

Beim einfügen des Generators schreib ich dann bei Insert Manual oben links D5 und unten rechts 3.

Wenn ich das ganze jetzt aber im Spiel betrachte, ist der Generator nur ein runterfallendes grünes Thwombteil.
Jemand ne Idee wo der Fehler ist oder ob das ganze so überhaupt gehen könnte / es eine einfachere Lösung gibt?
geschrieben am 05.01.2014 13:46:05
( Link )
Hmm, also ich gehe mal davon aus, dass du BOOOM.cfg (oder B000M.cfg?) im Ordner Generators statt Sprites gespeichert hast und dass Spritetool alles ordnungsgemäß eingefügt hat. Ich hatte schon mal Customsprites zwar in LM per Insert Manual eingefügt, aber vergessen, meine Customsprites mit Spritetool einzufügen und mich über herunterfallende "Sprites" gewundert.

Was passiert, wenn du den Generator mit nicht gesetztem Extra-Bit einfügst?

Was passiert, wenn du einen anderen Custom Sprite im Generator festlegst?

Hast du mal geguckt, ob es auf SMW Central andere Versionen dieses Generators gibt? Soweit ich weiß, hat Imamelia mal Random Custom Generators rausgebracht, die also verschiedene Custom Sprites erschaffen. Notfalls könnte man hier bei den Custom Sprite-Nummern immer $3C angeben.

Ich habe den Generator generic.cfg bei mir im Spiel ebenfalls, als Custom Sprite den Custom-Bulletbill. Bei mir im Hack funktioniert der Generator wunderbar.
geschrieben am 05.01.2014 23:23:15
( Link )
Hab jetzt einfach den Torpedoted Luncher umfunktioniert. Das klappt
geschrieben am 27.04.2014 12:15:38
( Link )
Hallo zusammen.

Ich habe HDMA Effects 1.0 von Ice Man benutzt, um einen Scrolling Effekt einzufügen. Aber komischerweise funktioniert dieser Effekt nur, wenn ich ihn mit level_code.asm (uberASM) einfüge und nicht mit level_init_code.asm und dadurch hab ich ganz kurz, wenn ich den besagten Raum betrete, keinen HDMA Effekt und das geht mir ziemlich auf die Nerven. x-x

Ich bin mir zu 100% sicher, dass ich auch Scrolling Effekte schon in früheren Projekten mit level_init_code.asm eingefügt habe und keine Probleme damit hatte.

Hier mal der HDMA Code als Patch:

Code
;@xkas
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;HDMA Horizontal Waves
;by KilloZapit, modified by Ice Man
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

lorom ;\ ROM is LoRom
header ;| and has a header
org $158000 ;/ Address to insert code

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;RATS Tag Macro
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;HDMA Channel Settings
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

%RATS_start(0)
REP #$20 ;\ Set processor 16 bit
LDA #$0D02 ;| $4330 = $210D
STA $4330 ;| $4331 = Mode 02
LDA #$9E00 ;|
STA $4332 ;| Destination: $7F9E00
LDY #$7F ;| (low and high byte)
STY $4334 ;|
LDA #$0F02 ;| $4340 = $210F
STA $4340 ;| $4341 = Mode 02
LDA #$9E00 ;|
STA $4342 ;| Destination: $7F9E00
LDY #$7F ;| (low and high byte)
STY $4344 ;|
SEP #$20 ;/ Set processor 8 bit

LDA #$18 ;\ Enable HDMA
TSB $0D9F ;/ on channel 3,4

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;HDMA Main Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LDX #$00 ;\ Init of
LDY #$00 ;/ X and Y

SEP #$20 ;\ Set processor 8 bit
LDA $13 ;| Set speed of waves
LSR A ;| Adding more LSR A
LSR A ;| will make it slower
STA $00 ;/ Store in scratch RAM

PHB ;\ Push data bank
PHK ;| Push program bank
PLB ;/ Pull data bank

Wave_Loop:
LDA #$06 ;\ Set scanline height
STA $7F9E00,x ;| for each wave
TYA ;| Transfer Y to A
ADC $00 ;| Add in scratch RAM
AND #$0F ;| and transfer #$0F bytes
PHY ;| Push Y
TAY ;/ Transfer A to Y

LDA.w Wave_Table,y ;\ Load in wave values
LSR A ;| half of waves only
CLC ;| Clear carry flag
ADC $1462 ;| Apply to layer 1
STA $7F9E01,x ;| X position low byte
LDA $1463 ;| And add nothing to
ADC #$00 ;| layer 1 X position
STA $7F9E02,x ;/ high byte

LDA.w Wave_Table,y ;\ Load in wave values
CLC ;| Clear carry flag
ADC $1466 ;| Apply to layer 2
STA $7F9E03,x ;| X position low byte
LDA $1467 ;| And add nothing to
ADC #$00 ;| layer 2 X position
STA $7F9E04,x ;/ high byte

PLY ;\ Pull Y
CPY #$25 ;| Compare with #$25 scanlines
BPL End_Wave ;| If bigger, end HDMA
INX ;| Increase X
INX ;| Increase X
INX ;| Increase X
INY ;| Increase Y
BRA Wave_Loop ;/ Do the loop

End_Wave:
PLB ;\ Pull data bank
LDA #$00 ;| End HMDA by writing
STA $7F9E05,x ;| #$00 here
RTL ;/ Return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Table Settings
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Wave_Table:
db $00
db $01
db $02
db $03
db $04
db $05
db $06
db $07
db $07
db $06
db $05
db $04
db $03
db $02
db $01
db $00
%RATS_end(0)


Laut Readme muss ich einfach nur bei levelasm JSL $158008 RTS schreiben. (Natürlich untereinander)

Edit:
Hier mal 2 Screenshots um zu sehen was ich meine.. Das der Background so umspringt sieht einfach schlimm aus

Spoiler anzeigen
geschrieben am 27.04.2014 12:58:40
( Link )
Eine Ahnung hab ich eigentlich auch nicht, aber probier mal, nach dem TSB $0D9F noch ein TSB $420C hinzuzufügen.
geschrieben am 27.04.2014 13:07:01
( Link )
Nein funktioniert noch immer nicht.. :/
geschrieben am 10.05.2014 21:40:16
( Link )
Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Thunder by Ghettoyouth
;
; note: palette 0 will be overwritten by Bowser's palette!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; sprite code JSL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

dcb "INIT"
dcb "MAIN"
PHB
PHK
PLB
JSR SPRITE_CODE_START
PLB
RTL

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; main sprite code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SPRITE_CODE_START JSL $03DFCC ;jump to SMW's thunder routine
RETURN RTS


So ich glaube die Lösung ist ganz fix: Wie mache ich aus diesen Generator einen Sprite, der auf dem Screen bleibt? Ich habe nämlich einen anderen Generator schon im Gebrauch. Und wie ihr sehen könnt: Nur 2 LINES. Ich muss also nur wissen wie man einen unbesiegbaren, unsichtbaren, auf dem Bildschirmbleib Sprite macht
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...
geschrieben am 10.05.2014 21:49:11
( Link )
Geht die "Process when off screen"-Option im CFG-Editor nicht?
geschrieben am 03.01.2015 20:24:49
( Link )
Der folgende Block macht genau das was er soll. Er beendet ein Level wenn man den Block berührt und man landet wieder auf der OW. Leider ist dann die OW Musik weg. Idee woran das liegen könnte bzw. wie man das beheben kann?

Code

LDA #$FF ;freeze
STA $9D ;all sprites on screen....
LDA #$FF ;course clear
STA $1493 ;mode
LDA #$0B ;type 0C for other music
STA $1DFB ;
DEC $13C6 ;prevent mario from walking
geschrieben am 03.01.2015 21:42:15
( Link )
Vielleicht so:

Code
2102E	$04:8E2E	1 byte	Music	Change to 80 to fix the glitch that occurs when Mario defeats one of the Koopalings and the music on the Overworld "disappears". Also applies for Custom Music.

Oder du verringerst die beiden #$FFs ein bisschen, so weit wie möglich, vielleicht sind die Werte zu hoch. (Die ersten beiden Zeilen können eh weg, glaube ich.)
geschrieben am 15.03.2015 14:12:08
( Link )
Hallo, ich möchte bei den Map16-Nummern #$109 und #$10A Customblöcke einfügen. Dazu möchte ich, dass, wenn ein Shyguy auf diesen Blöcken entlanggeht, dieser eine andere horizontale Geschwindigkeit hat als sonst. Daher habe ich im asm-Code des Shyguy folgeden Code eingefügt:

Code
  	LDY $157C,x             ; Set x speed based on direction      
LDA $1588,x ; if on the ground now...
AND #04 ;
BEQ Noleft
LDA $185F ; This is the low byte of the Map16 tile (actual tile number, not "acts like" setting) that a sprite is touching vertically.
CMP #$09 ; rightmovingblock?
BNE Noright
LDA $18D7 ; This is the high byte of the Map16 tile (actual tile number, not "acts like" setting) that a sprite is touching vertically.
CMP #$01
BNE Noright
LDA SpeedX2,y
STA $B6,x
BRA Normal
Noright:
LDA $185F ; This is the low byte of the Map16 tile (actual tile number, not "acts like" setting) that a sprite is touching vertically.
CMP #$0A ; leftmovingblock?
BNE Noleft
LDA $18D7 ; This is the high byte of the Map16 tile (actual tile number, not "acts like" setting) that a sprite is touching vertically.
CMP #$01
BNE Noleft
LDA SpeedX3,y
STA $B6,x
BRA Normal
Noleft:
LDA SpeedX,y
STA $B6,x
Normal:

Wenn der Shyguy also den Block #$109 von oben berührt, soll er SpeedX2 haben und wenn er #$10A von oben berührt, soll er SpeedX3 haben. Falls er den Block gar nicht berührt, soll er die normale Geschwindigkeit SpeedX haben.
Doch leider hat der Shyguy immer die normale Geschwindigkeit, er reagiert gar nicht auf den Block. Ich habe es statt mit dem low und high bite auch schon mit der Adresse $18A7 versucht, ohne Erfolg. Kann mir jemand helfen?
geschrieben am 15.03.2015 15:31:56
( Link )
Hm. Ich würd's mal andersrum probieren und in den Block-Code schreiben "wenn mich ein Sprite berührt und der ein Shyguy ist, verändere seine Geschwindigkeit".
geschrieben am 23.07.2015 11:31:00
( Link )
Ich verwende einen Customsprite-Generator, der die Sprites von der rechten Seite erscheinen lässt. Über die Y-Position entscheidet der Zufall, die Sprites können also ganz oben, in der Mitte oder ganz unten auftauchen.
Ich möchte, dass die Sprites innerhalb eines vorgegebenen Höhenbereiches erscheinen, also von Y-Position #$... bis Y-Position #$... (innerhalb dieses Bereiches dann wieder in zufälliger Höhe). Es geht mir darum, dass die Sprites nicht ganz oben oder unten, sondern eher in der Mitte erscheinen.

Hier der Code des Generators, der die Position der Sprites festlegt:
Code
	    	JSL $01ACF9
AND #$7F
ADC #$40
ADC $1C
STA $D8,x
LDA $1D
ADC #$00
STA $14D4,x
LDA $148E
AND #$01
TAY
LDA TBL_B2D0,y
CLC
ADC $1A
STA $E4,x
LDA $1B
ADC TBL_B2D2,y
STA $14E0,x
LDA TBL_B2D4,y
STA $B6,x
RETURN RTS


Ich vermute, dass das mit den Adressen $D8,x und $14D4,x etwas zu tun hat. Kann mir jemand helfen?
geschrieben am 24.07.2015 12:42:51
( Link )
Das ist eigentlich ganz simpel. Beim ersten Trick (der übrigens schon im Code drin ist) muss man ein AND nutzen. Dies hat aber das Problem, dass man nur die Zahlen $01, $03, $07, $0F, $1F, $3F, und $7F nutzen kann. Für Zahlen dazwischen benötigt man diesen Code (du musst nicht alles kopieren, nur den oberen Teil). Ansonsten muss man bei beiden Zahlen. Die Formel ist ganz einfach x=(224-r)/2 wo r die Reichweite ist (beachte aber, dass du zum Trick mit den AND eins zur Zahl hinzuaddieren musst, bevor du es für r einsetzt). Die Anfang des Codes wäre nämlich dann so (Trick mit AND):
Code
          JSL $01ACF9
AND #$rr
CLC
ADC #$xx
CLC
ADC $1C
STA $D8,x

bzw. so (Trick mit den gelinkten Code):
Code
          LDA #$rr
JSL RANDOM
CLC
ADC #$xx
CLC
ADC $1C
STA $D8,x
Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->
geschrieben am 25.07.2015 17:09:48
( Link )
Das mit der Formel hab ich zwar nicht verstanden, aber ich habe den ersten Code eingesetzt, bei #$rr und #$xx ein bisschen mit den Zahlen gespielt und jetzt funktioniert es, wie es soll. Also danke für deine Hilfe .