Beiträge von Seuchensoldat

geschrieben am 19.12.2010 12:43:50 in Vorstellungs-/Verlassens-/Rückkehr-Thread
( Link )
Meine Wenigkeit meldet sich nach einigen Monaten auch wieder zurück.
geschrieben am 19.12.2010 16:18:14 in Vorstellungs-/Verlassens-/Rückkehr-Thread
( Link )
Oho, ich bin positiv überrascht, dass man sich noch an mich erinnert.
geschrieben am 20.12.2010 15:03:05 in Allgemeine Diskussionen
( Link )
Man kommt von der Arbeit nach Hause und der ganze Wintergarten steht unter Wasser. Grund: Zugefrorenes Abflußrohr der Regenrinne. Es gibt Tage, da würde man am Liebsten das ganze Haus zerlegen!
geschrieben am 21.12.2010 20:55:26 in Du suchst Custom Sprites/Blocks/Music oder Graphics? Hier!
zuletzt bearbeitet von Seuchensoldat am 21.12.2010 21:56:45.
( Link )
Gibt es irgendwo funktionierende Yoshi's Island Bandit Graphiken für die Chucks? Bei mir passt das Ganze immer nie, der Kopf schwebt in der Luft oder sonst was. Ich vermute mal das, was ich bis jetzt in Hacks gesehen habe, ist ein Sprite von Carol, was ärgerlich wäre.
geschrieben am 21.12.2010 21:57:12 in Du suchst Custom Sprites/Blocks/Music oder Graphics? Hier!
( Link )
Da schau ich meistens zuerst, wenn ich nach irgendwas suche, in dem Fall leider ohne Erfolg. Trotzdem danke.
geschrieben am 23.12.2010 13:47:56 in Chris' SMB3-styled Hack
( Link )
Je mehr ich zu sehen und testen bekomme, umso mehr gefällt mir das Projekt. Zieh das auf jeden Fall durch, meine Rache wird sonst fürchterlich sein.
geschrieben am 24.12.2010 20:45:57 in WEIHNACHTEN
( Link )
Zitat von okami:
Ich Wünsche euch allen Frohe Weinachten und eine schöne bescherrung.
Und Feiert nciht zu dolle .


Dir auch einen guten Hunger.

Ich persönlich verabscheue diesen ganzen Weihnachtsrummel. Das wirklich Positive an dem ganzen Gedöns ist im Endeffekt tagelanges OM NOM NOM. Mehr auch nicht.
geschrieben am 24.12.2010 20:50:54 in Ideen...
( Link )
Hab scheinbar das gleiche Problem wie Zyforth, mein Lebeldesign ist eher unterdurchschnittlich. Hindert mich aber dennoch nicht am Hacken, da ich das Ganze primär für mich mache, da es mir Spaß bereitet. Dennoch versucht man natürlich seine Fähigkeiten zu steigern. Bei dem Einen klappts, bei dem Anderen weniger, aber wie RPGHacker schon sagte, das hängt einfach von der Person ab.
geschrieben am 25.12.2010 0:04:12 in WEIHNACHTEN
( Link )
Interessant Mert, bei mir gab es als kleinen Gag auch ein Fingerschlagzeug.

Ansonsten gab es Horrorliteratur, Naschkram und was am Wichtigsten ist, eine kleine Finanzspritze, damit ich meinen Gitarrenamp abbezahlen kann.
geschrieben am 26.12.2010 11:59:43 in Du suchst Custom Sprites/Blocks/Music oder Graphics? Hier!
( Link )
Vllt. kann mir ja jemand weiterhelfen: Gibt es noch irgendeine Möglichkeit, Carol zu kontaktieren oder seine Sprites zu bekommen? Carol antwortet ja scheinbar nicht mehr auf e-mails (hatte vor Monaten mal geschrieben, aber nie Antwort erhalten) und auf SMW Central hieß es mal, dass man andere Leute fragen solle, die seine Sprites haben. Jene geben die natürlich nicht raus, weil das typische Argument "Overuse" als Antwort kommt (und weil man natürlich ein Noob ist..). Find ich persönlich sehr schade, denn erstens finde ich die Sprites überhaupt nicht overused und zweitens gibt man so "Noobs" nicht den geringsten Hauch einer Chance.

Ich suche speziell die Banditenchucks, wie hier bei 5:30 zu sehen ist:



Wahrscheinlich braucht man dafür kein Sprite, aber ich hab mal die Graphiken von SMB3x genommen und im Chuckslot (müsste SP3 sein) eingefügt, das Ganze sieht fürchterlich aus, da die Anordnung mal gar nicht stimmt. :/ Auch die Banditgraphiken von SMW Central ändern daran nicht wirklich was... Es sieht einfach ekelig aus.
geschrieben am 26.12.2010 20:19:42 in Du suchst Custom Sprites/Blocks/Music oder Graphics? Hier!
( Link )
Das wäre sehr nett. Ich schreib dir mal eine PM.
geschrieben am 26.12.2010 20:31:41 in Allgemeine Hex- und ASM-Fragen
( Link )
So, ich kämpfe ja mit den Banditengraphiken herum und habe mir eine kleine Notlösung einfallen lassen. Der Chuck als Bandit ist zwar schön und gut, aber ich vereinfache das Ganze ein bisschen. Es gibt ja den Yoshis Island Grunt als Sprite (sozusagen ein Bandit mit Helm auf dem Kopf). Ich hab nun die Banditengraphiken genommen und so gelegt, dass sie auf den Grunt passen (siehe Screenshot).



Dass der Körper rot ist, ist nicht weiter wichtig. Habe gesehen, dass es die Banditen in blauer und in roter Kleidung gibt, dementsprechend mache ich zwei Sprites draus: Einen blauen Banditen, der langsam geht und einen roten, der schnell läuft und Mario wohl folgt.

Zwei kleine Sachen fehlen noch zu meinem Glück:

1. Die Palette konnte ich mittlerweile ändern. Allerdings existiert nun folgendes Problem: Ich kann einige Felder weiter rechts neben den Banditen springen und töte ihn (warum auch immer). Ebenfalls werde ich getötet, wenn ich eine gewisse Distanz rechts von ihm stehe und er auf mich zuläuft. Kann man das irgendwie beheben? Dazu muss ich sagen, dass ich die Tilemaps in der .asm Datei anders angeordnet habe, und zwar von dem unteren Mittelbereich der SP4 Graphik auf die linke Seite.


2. Scheinbar ist es nicht vorgesehen, dass der Grund durch einen Sprung besiegt werden kann. Ich habe ein wenig mit dem cfg_editor rumgefummelt und mittlerweile eingestellt, dass der Grunt mit einem Sprung auf den Kopf besiegt werden kann. Allerdings hätte ich es gerne, dass er dann wie andere Gegner nach unten aus dem Bildschirm fällt (wie z.B. ein besiegter Chuck). Aktuell ist es so, dass nach einem Sprung auf den Kopf die Graphik noch kurz angezeigt wird und sie dann verschwindet. Sollte da niemand eine Lösung für wissen, werde ich den Grunt in einer Rauchwolke verschwinden lassen.

Danke im Voraus!

Hier noch der Code der aktuellen .asm Datei:

Spoiler anzeigen
;Grunt
;by smkdan

;IMPORTANT: Sprite clipping offset is 9 by default, but may be wider than you'd like.
; Sprite clipping offset 1 is a viable alternative, which is less wide. This will cause the sprite to be unaffected by being
; hit from a block from below.

;you can change the palette to green, blue, red or yellow. The head and feet are unaffected.

;USES EXTRA BIT
;if set, it will run else it will walk.

;Extra prop 1:
;bit 0 = stay on ledges?
;bit 1 = follow mario?

;Tilemaps for SP4


DIR = $03
PROPRAM = $04
PROPINDEX = $05
XDISPINDEX = $06
YDISPINDEX = $07
FRAMEINDEX = $08
TEMP = $09

Speed dcb $08,$F8 ;walking speed
dcb $10,$F0 ;running speed

;C2: for follow behaviour
;1570: frame number
;151C: turn counter

;=====

dcb "INIT"
JSR SUB_HORZ_POS
TYA
STA $157C,x ;face mario intially
STZ $1570,x ;reset frame number

LDA $1588,x
ORA #$04
STA $1588,x

RTL

dcb "MAIN"
PHB
PHK
PLB
JSR Run
PLB
RTL


Return_l
RTS

Run
JSR GET_DRAW_INFO
JSR GFX ;draw sprite
JSR SUB_OFF_SCREEN_X0

LDA $14C8,x
CMP #$08 ;if it's not living, see if the sprite should be generated
BNE Return_l
LDA $9D ;locked sprites?
BNE Return_l
LDA $15D0,x ;yoshi eating?
BNE Return_l

;===
LDA $7FAB28,x ;load prop 1
AND #$01 ;bit 0 set?
BEQ Fall ;if clear, just fall, else stay on ledge

LDA $1588,x ;sprite in air?
ORA $151C,x
BNE OnGround
JSR SUB_CHANGE_DIR
LDA #$01 ;turning decision bit
STA $151C,x

OnGround
LDA $1588,x ;if on the ground, reset the turn counter
AND #$04
BEQ InAir
STZ $151C,x
STZ $AA,x ;no Yspd
BRA InAir

;Only run when stay on ledges is disabled

Fall LDA $1588,x
AND #$04
BEQ InAir
LDA #$10 ;falling yspd, if not already falling
STA $AA,x

;===

InAir
LDA $1588,x ;touching object?
AND #$03
BEQ SameDir
LDA $157C,x
EOR #$01 ;invert direction
STA $157C,x

SameDir
LDA $7FAB10,x ;extra bit
AND #$04 ;just that
LSR A ;bit 1 = running
ORA $157C,x ;bit 0 = direction
TAY ;into Y
LDA Speed,y ;x speed depends on direction
STA $B6,x

JSL $018032 ;other sprites
JSL $01802A ;update position based on speed values
JSL $01A7DC ;mario interact

LDA $7FAB28,x ;load prop 1
AND #$02 ;bit 1, follow mario?
BEQ Return ;if clear, don't do anything else

JSR SUB_HORZ_POS ;left/right?
TYA ;result into A
CMP $157C,x ;compare to direction, if matches there's no need to follow
BEQ NoFollowing

LDA $C2,x
INC A
STA $C2,x
CMP #$10 ;don't change dir for X frames
BNE Return ;if not yet, return

LDA $157C,x ;else flip direction
EOR #$01
STA $157C,x ;and, also reset turn counter

NoFollowing
STZ $C2,x ;not following = zero follow counter for later use

Return
RTS

;=====

TILEMAP dcb $E2,$A0,$C0
dcb $F0,$F1 ;different feet tiles

dcb $E2,$A0,$C0
dcb $E0,$F1

dcb $E2,$A0,$C0
dcb $E1,$E1

dcb $E2,$A0,$C0
dcb $E0,$E1

dcb $E2,$A0,$C0
dcb $F0,$F1

;running tilemaps

dcb $E2,$A0,$C0
dcb $F0,$E1

dcb $E2,$A0,$C0
dcb $E0,$E0

dcb $E2,$A0,$C0
dcb $E0,$E0

XDISP dcb $00,$00,$00
dcb $05,$00

dcb $00,$00,$00
dcb $09,$00

dcb $00,$00,$00
dcb $FE,$0C

dcb $00,$00,$00
dcb $FF,$0D

dcb $00,$00,$00
dcb $03,$00

;

dcb $00,$00,$00
dcb $05,$0D

dcb $00,$00,$00
dcb $01,$0A

dcb $00,$00,$00
dcb $01,$0A

XBIAS
dcb $00,$00,$00
dcb $08,$08

YDISP dcb $FE,$05,$0C
dcb $18,$00

dcb $FF,$06,$0D
dcb $18,$00

dcb $00,$07,$0E
dcb $17,$19

dcb $01,$07,$0D
dcb $18,$14

dcb $00,$06,$0C
dcb $18,$00

;
dcb $01,$07,$0D
dcb $18,$17

dcb $00,$06,$0C
dcb $17,$17

dcb $00,$06,$0C
dcb $17,$17

PROP dcb $00,$00,$00
dcb $00,$00

dcb $00,$00,$00
dcb $40,$00

dcb $00,$00,$00
dcb $00,$40

dcb $00,$00,$00
dcb $00,$00

dcb $00,$00,$00
dcb $00,$00

;
dcb $00,$00,$00
dcb $00,$40

dcb $00,$00,$00
dcb $00,$40

dcb $00,$00,$00
dcb $00,$40

CPAL dcb $00,$00,$00 ;00 if custom palette is used, else palette data here is used
dcb $03,$03 ;feet are blue

SIZE dcb $02,$02,$02
dcb $00,$00

EORF dcb $40,$00


GFX
LDA $157C,x ;direction
STA DIR

LDA $15F6,x ;properties, palette and page bit
STA PROPRAM

LDA $7FAB10,x
AND #$04 ;extra bit = running
BEQ Walking

LDA $14
AND #$01 ;every odd frame
BNE SkipR
LDA $9D ;due to odd way it animates, skip animating if sprites are locked
BNE SkipR
LDA $14C8,x ;if not normal status, don't animate
CMP #$08
BNE SkipR

LDA $1570,x
INC A
STA $1570,x
CMP #$03 ;3 = overflow
BNE SkipR
STZ $1570,x

SkipR
LDA $1570,x
ASL A
ASL A ;x4
CLC
ADC $1570,x ;x5
ADC #$19 ;+25, skip past walking frames
STA FRAMEINDEX

LDX #$00 ;loop index
BRA OAM_Loop ;jump into loop

Walking
LDA $14
AND #$03 ;every 4th frame
BNE SkipW
LDA $9D ;due to odd way it animates, skip animating if sprites are locked
BNE SkipW
LDA $14C8,x ;if not normal status, don't animate
CMP #$08
BNE SkipW

LDA $1570,x ;grab frame no.
INC A
STA $1570,x
CMP #$05 ;5 = overflow
BNE SkipW
STZ $1570,x

SkipW
LDA $1570,x ;frame no...
ASL A
ASL A ;x4
CLC
ADC $1570,x ;x5
STA FRAMEINDEX


LDX #$00 ;loop index

OAM_Loop
TYA
LSR A
LSR A
PHY
TAY
LDA SIZE,x
STA $0460,y ;size table
PLY ;restore

TXA
CLC
ADC FRAMEINDEX
PHX
TAX
LDA DIR
BNE XLeft

LDA $00
SEC
SBC XDISP,x
PLX ;pulling x here = loop index
CLC
ADC XBIAS,x ;add bias since it throws it on the other side
STA $0300,y
BRA XNext
XLeft
LDA $00
CLC
ADC XDISP,x
STA $0300,y
PLX
XNext

TXA
CLC
ADC FRAMEINDEX
PHX
TAX
LDA $01
CLC
ADC YDISP,x
STA $0301,y
PLX

TXA
CLC
ADC FRAMEINDEX
PHX
TAX
LDA TILEMAP,x
STA $0302,y
PLX

TXA
CLC
ADC FRAMEINDEX
PHX
TAX
LDA PROP,x
ORA $64
PHX
LDX DIR
EOR EORF,x
PLX

PLX ;restore loop index, since the same palette applies to each tile
STA TEMP ;store current value to TEMP
LDA CPAL,x
BEQ CustomPal ;if zero, use user supplied palette

ASL A ;else move into palette bits
TSB TEMP ;OR with current bits
LDA PROPRAM
AND #$01 ;load only the low bit, page bit
TSB TEMP ;OR with current bits
LDA TEMP ;get ready to store it

BRA StoreProp ;skip past custom palette bit

CustomPal
LDA #$00 ;reset
LDA PROPRAM ;just OR with propram
ORA TEMP ;and also TEMP

StoreProp
STA $0303,y

INY
INY
INY
INY
INX
CPX #$05 ;5 tiles ATM
BEQ End_Loop
JMP OAM_Loop

End_Loop
LDX $15E9

LDY #$FF ;$460 written to
LDA #$04 ;5 tiles
JSL $01B7B3

RTS

;=================
;BORROWED ROUTINES
;=================

;GET_DRAW_INFO
;==============

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; $B760 - graphics routine helper - shared
; sets off screen flags and sets index to OAM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SPR_T1 dcb $0C,$1C
SPR_T2 dcb $01,$02

GET_DRAW_INFO STZ $186C,x ; reset sprite offscreen flag, vertical
STZ $15A0,x ; reset sprite offscreen flag, horizontal
LDA $E4,x ; \
CMP $1A ; | set horizontal offscreen if necessary
LDA $14E0,x ; |
SBC $1B ; |
BEQ ON_SCREEN_X ; |
INC $15A0,x ; /

ON_SCREEN_X LDA $14E0,x ; \
XBA ; |
LDA $E4,x ; |
REP #$20 ; |
SEC ; |
SBC $1A ; | mark sprite invalid if far enough off screen
CLC ; |
ADC.W #$0040 ; |
CMP.W #$0180 ; |
SEP #$20 ; |
ROL A ; |
AND #$01 ; |
STA $15C4,x ; /
BNE INVALID ;

LDY #$00 ; \ set up loop:
LDA $1662,x ; |
AND #$20 ; | if not smushed (1662 & 0x20), go through loop twice
BEQ ON_SCREEN_LOOP ; | else, go through loop once
INY ; /
ON_SCREEN_LOOP LDA $D8,x ; \
CLC ; | set vertical offscreen if necessary
ADC SPR_T1,y ; |
PHP ; |
CMP $1C ; | (vert screen boundry)
ROL $00 ; |
PLP ; |
LDA $14D4,x ; |
ADC #$00 ; |
LSR $00 ; |
SBC $1D ; |
BEQ ON_SCREEN_Y ; |
LDA $186C,x ; | (vert offscreen)
ORA SPR_T2,y ; |
STA $186C,x ; |
ON_SCREEN_Y DEY ; |
BPL ON_SCREEN_LOOP ; /

LDY $15EA,x ; get offset to sprite OAM
LDA $E4,x ; \
SEC ; |
SBC $1A ; | $00 = sprite x position relative to screen boarder
STA $00 ; /
LDA $D8,x ; \
SEC ; |
SBC $1C ; | $01 = sprite y position relative to screen boarder
STA $01 ; /
RTS ; return

INVALID PLA ; \ return from *main gfx routine* subroutine...
PLA ; | ...(not just this subroutine)
RTS ; /


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SUB_OFF_SCREEN
; This subroutine deals with sprites that have moved off screen
; It is adapted from the subroutine at $01AC0D
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SPR_T12 dcb $40,$B0
SPR_T13 dcb $01,$FF
SPR_T14 dcb $30,$C0,$A0,$C0,$A0,$F0,$60,$90 ;bank 1 sizes
dcb $30,$C0,$A0,$80,$A0,$40,$60,$B0 ;bank 3 sizes
SPR_T15 dcb $01,$FF,$01,$FF,$01,$FF,$01,$FF ;bank 1 sizes
dcb $01,$FF,$01,$FF,$01,$00,$01,$FF ;bank 3 sizes

SUB_OFF_SCREEN_X1 LDA #$02 ; \ entry point of routine determines value of $03
BRA STORE_03 ; | (table entry to use on horizontal levels)
SUB_OFF_SCREEN_X2 LDA #$04 ; |
BRA STORE_03 ; |
SUB_OFF_SCREEN_X3 LDA #$06 ; |
BRA STORE_03 ; |
SUB_OFF_SCREEN_X4 LDA #$08 ; |
BRA STORE_03 ; |
SUB_OFF_SCREEN_X5 LDA #$0A ; |
BRA STORE_03 ; |
SUB_OFF_SCREEN_X6 LDA #$0C ; |
BRA STORE_03 ; |
SUB_OFF_SCREEN_X7 LDA #$0E ; |
STORE_03 STA $03 ; |
BRA START_SUB ; |
SUB_OFF_SCREEN_X0 STZ $03 ; /

START_SUB JSR SUB_IS_OFF_SCREEN ; \ if sprite is not off screen, return
BEQ RETURN_35 ; /
LDA $5B ; \ goto VERTICAL_LEVEL if vertical level
AND #$01 ; |
BNE VERTICAL_LEVEL ; /
LDA $D8,x ; \
CLC ; |
ADC #$50 ; | if the sprite has gone off the bottom of the level...
LDA $14D4,x ; | (if adding 0x50 to the sprite y position would make the high byte >= 2)
ADC #$00 ; |
CMP #$02 ; |
BPL ERASE_SPRITE ; / ...erase the sprite
LDA $167A,x ; \ if "process offscreen" flag is set, return
AND #$04 ; |
BNE RETURN_35 ; /
LDA $13 ;A:8A00 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdiZcHC:0756 VC:176 00 FL:205
AND #$01 ;A:8A01 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizcHC:0780 VC:176 00 FL:205
ORA $03 ;A:8A01 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizcHC:0796 VC:176 00 FL:205
STA $01 ;A:8A01 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizcHC:0820 VC:176 00 FL:205
TAY ;A:8A01 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizcHC:0844 VC:176 00 FL:205
LDA $1A ;A:8A01 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizcHC:0858 VC:176 00 FL:205
CLC ;A:8A00 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdiZcHC:0882 VC:176 00 FL:205
ADC SPR_T14,y ;A:8A00 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdiZcHC:0896 VC:176 00 FL:205
ROL $00 ;A:8AC0 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:eNvMXdizcHC:0928 VC:176 00 FL:205
CMP $E4,x ;A:8AC0 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:eNvMXdizCHC:0966 VC:176 00 FL:205
PHP ;A:8AC0 X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizCHC:0996 VC:176 00 FL:205
LDA $1B ;A:8AC0 X:0009 Y:0001 D:0000 DB:01 S:01F0 P:envMXdizCHC:1018 VC:176 00 FL:205
LSR $00 ;A:8A00 X:0009 Y:0001 D:0000 DB:01 S:01F0 P:envMXdiZCHC:1042 VC:176 00 FL:205
ADC SPR_T15,y ;A:8A00 X:0009 Y:0001 D:0000 DB:01 S:01F0 P:envMXdizcHC:1080 VC:176 00 FL:205
PLP ;A:8AFF X:0009 Y:0001 D:0000 DB:01 S:01F0 P:eNvMXdizcHC:1112 VC:176 00 FL:205
SBC $14E0,x ;A:8AFF X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizCHC:1140 VC:176 00 FL:205
STA $00 ;A:8AFF X:0009 Y:0001 D:0000 DB:01 S:01F1 P:eNvMXdizCHC:1172 VC:176 00 FL:205
LSR $01 ;A:8AFF X:0009 Y:0001 D:0000 DB:01 S:01F1 P:eNvMXdizCHC:1196 VC:176 00 FL:205
BCC SPR_L31 ;A:8AFF X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdiZCHC:1234 VC:176 00 FL:205
EOR #$80 ;A:8AFF X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdiZCHC:1250 VC:176 00 FL:205
STA $00 ;A:8A7F X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizCHC:1266 VC:176 00 FL:205
SPR_L31 LDA $00 ;A:8A7F X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizCHC:1290 VC:176 00 FL:205
BPL RETURN_35 ;A:8A7F X:0009 Y:0001 D:0000 DB:01 S:01F1 P:envMXdizCHC:1314 VC:176 00 FL:205
ERASE_SPRITE LDA $14C8,x ; \ if sprite status < 8, permanently erase sprite
CMP #$08 ; |
BCC KILL_SPRITE ; /
LDY $161A,x ;A:FF08 X:0007 Y:0001 D:0000 DB:01 S:01F3 P:envMXdiZCHC:1108 VC:059 00 FL:2878
CPY #$FF ;A:FF08 X:0007 Y:0000 D:0000 DB:01 S:01F3 P:envMXdiZCHC:1140 VC:059 00 FL:2878
BEQ KILL_SPRITE ;A:FF08 X:0007 Y:0000 D:0000 DB:01 S:01F3 P:envMXdizcHC:1156 VC:059 00 FL:2878
LDA #$00 ;A:FF08 X:0007 Y:0000 D:0000 DB:01 S:01F3 P:envMXdizcHC:1172 VC:059 00 FL:2878
STA $1938,y ;A:FF00 X:0007 Y:0000 D:0000 DB:01 S:01F3 P:envMXdiZcHC:1188 VC:059 00 FL:2878
KILL_SPRITE STZ $14C8,x ; erase sprite
RETURN_35 RTS ; return

VERTICAL_LEVEL LDA $167A,x ; \ if "process offscreen" flag is set, return
AND #$04 ; |
BNE RETURN_35 ; /
LDA $13 ; \
LSR A ; |
BCS RETURN_35 ; /
LDA $E4,x ; \
CMP #$00 ; | if the sprite has gone off the side of the level...
LDA $14E0,x ; |
SBC #$00 ; |
CMP #$02 ; |
BCS ERASE_SPRITE ; / ...erase the sprite
LDA $13 ;A:0000 X:0009 Y:00E4 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:1218 VC:250 00 FL:5379
LSR A ;A:0016 X:0009 Y:00E4 D:0000 DB:01 S:01F3 P:envMXdizcHC:1242 VC:250 00 FL:5379
AND #$01 ;A:000B X:0009 Y:00E4 D:0000 DB:01 S:01F3 P:envMXdizcHC:1256 VC:250 00 FL:5379
STA $01 ;A:0001 X:0009 Y:00E4 D:0000 DB:01 S:01F3 P:envMXdizcHC:1272 VC:250 00 FL:5379
TAY ;A:0001 X:0009 Y:00E4 D:0000 DB:01 S:01F3 P:envMXdizcHC:1296 VC:250 00 FL:5379
LDA $1C ;A:001A X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:0052 VC:251 00 FL:5379
CLC ;A:00BD X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:0076 VC:251 00 FL:5379
ADC SPR_T12,y ;A:00BD X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:0090 VC:251 00 FL:5379
ROL $00 ;A:006D X:0009 Y:0001 D:0000 DB:01 S:01F3 P:enVMXdizCHC:0122 VC:251 00 FL:5379
CMP $D8,x ;A:006D X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNVMXdizcHC:0160 VC:251 00 FL:5379
PHP ;A:006D X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNVMXdizcHC:0190 VC:251 00 FL:5379
LDA.W $001D ;A:006D X:0009 Y:0001 D:0000 DB:01 S:01F2 P:eNVMXdizcHC:0212 VC:251 00 FL:5379
LSR $00 ;A:0000 X:0009 Y:0001 D:0000 DB:01 S:01F2 P:enVMXdiZcHC:0244 VC:251 00 FL:5379
ADC SPR_T13,y ;A:0000 X:0009 Y:0001 D:0000 DB:01 S:01F2 P:enVMXdizCHC:0282 VC:251 00 FL:5379
PLP ;A:0000 X:0009 Y:0001 D:0000 DB:01 S:01F2 P:envMXdiZCHC:0314 VC:251 00 FL:5379
SBC $14D4,x ;A:0000 X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNVMXdizcHC:0342 VC:251 00 FL:5379
STA $00 ;A:00FF X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:0374 VC:251 00 FL:5379
LDY $01 ;A:00FF X:0009 Y:0001 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:0398 VC:251 00 FL:5379
BEQ SPR_L38 ;A:00FF X:0009 Y:0001 D:0000 DB:01 S:01F3 P:envMXdizcHC:0422 VC:251 00 FL:5379
EOR #$80 ;A:00FF X:0009 Y:0001 D:0000 DB:01 S:01F3 P:envMXdizcHC:0438 VC:251 00 FL:5379
STA $00 ;A:007F X:0009 Y:0001 D:0000 DB:01 S:01F3 P:envMXdizcHC:0454 VC:251 00 FL:5379
SPR_L38 LDA $00 ;A:007F X:0009 Y:0001 D:0000 DB:01 S:01F3 P:envMXdizcHC:0478 VC:251 00 FL:5379
BPL RETURN_35 ;A:007F X:0009 Y:0001 D:0000 DB:01 S:01F3 P:envMXdizcHC:0502 VC:251 00 FL:5379
BMI ERASE_SPRITE ;A:8AFF X:0002 Y:0000 D:0000 DB:01 S:01F3 P:eNvMXdizcHC:0704 VC:184 00 FL:5490

SUB_IS_OFF_SCREEN LDA $15A0,x ; \ if sprite is on screen, accumulator = 0
ORA $186C,x ; |
RTS ; / return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SUB_HORZ_POS
; This routine determines which side of the sprite Mario is on. It sets the Y register
; to the direction such that the sprite would face Mario
; It is ripped from $03B817
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SUB_HORZ_POS LDY #$00
LDA $94
SEC
SBC $E4,x
STA $0F
LDA $95
SBC $14E0,x
BPL SPR_L16
INY
SPR_L16 RTS

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SUB_CHANGE_DIR
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;org $019098

SUB_CHANGE_DIR LDA $15AC,x
BNE LABEL41
LDA #$08
STA $15AC,x
LDA $B6,x
EOR #$FF
INC A
STA $B6,x
LDA $157C,x
EOR #$01
STA $157C,x
LABEL41 RTS

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SUB_HORZ_POS
; This routine determines which side of the sprite Mario is on. It sets the Y register
; to the direction such that the sprite would face Mario
; It is ripped from $03B817
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SUB_HORZ_POS LDY #$00
LDA $94
SEC
SBC $E4,x
STA $0F
LDA $95
SBC $14E0,x
BPL SPR_L16
INY
SPR_L16 RTS
geschrieben am 27.12.2010 18:01:44 in Allgemeine Hex- und ASM-Fragen
( Link )
Das ist bereits aktiviert. Wie gesagt, wenn ich auf den Gegner springe, bleibt die gerade angezeigte Animation vom Banditen kurz auf dem Screen und verschwindet dann.

Edit: Interessanterweise haben sich soeben beide meiner Probleme gelöst. Ich liebe Lunar Magic, wenn es so will wie ich!
geschrieben am 27.12.2010 20:59:05 in Wario´s Rescue Mission
( Link )
Jetzt schreib ich auch mal was hierzu. Hab den Hack ja unter Anderem schon als Betatester genießen dürfen und ich muss sagen, dass das Teil verdammt viel Spaß macht. Kann den hier nur wärmstens empfehlen. Spielt sich einfach gut!
geschrieben am 28.12.2010 12:51:46 in Die COMPUTER SUCHT
( Link )
Eigentlich läuft der PC bei mir den ganzen Tag. Allerdings nicht, weil ich zwangsweise irgendwas zocken muss, sondern weil ich primär darüber Musik höre und nunmal über das Internet mit vielen Leuten kommuniziere. Ich kann auch problemlos ohne den PC, dafür hab ich meine Gitarre, welche ich viel eher als Sucht bezeichnen würde.
geschrieben am 29.12.2010 16:25:11 in Ein Hack ohne Glitches und Bugs
( Link )
Ohne spammen zu wollen frage ich mich doch ernsthaft, warum man sich beim Mario Hacking gegenseitig irgendwas total Unnötiges beweisen muss. Der eine ist halt Perfektionist, der andere weniger. Das ist einfach in der Person selbst verankert. Da "failt" weder der eine noch der andere...
geschrieben am 29.12.2010 17:03:42 in Ein Hack ohne Glitches und Bugs
( Link )
Wenn jemand behauptet, er will einen bugfreien Hack machen und andere gegenhalten, dass das nicht möglich sei, scheint es meiner Meinung nach schon um das Thema "Ich will Anderen etwas beweisen" gehen. Die Frage ist allerdings nur, ob das zwingend notwendig ist. Die Hacks, die ich gespielt habe, warum klasse, auch wenn vllt. mal der ein oder andere Bug auftrat. Ist aber auch egal, das sollen die Leute unter sich klären, die darauf Lust haben.
geschrieben am 06.01.2011 21:46:10 in Allgemeine SMW Hacking Fragen
( Link )
Ich hätte auch mal wieder eine Frage. Ich hab mal eine Ranke in einem Level platziert und als ich jene hochklettern wollte, dachte ich nur: Was zum...? Wenn ich nach oben drücke, klettert Mario nach unten. Wenn ich nach unten drücke, klettert er ebenfalls nach unten, allerdings ein wenig schneller. Dabei hab ich nichts auf die Rom gepatcht oder etwas gemacht, was das bewirken könnte. Natürlich hab ich sofort diverse Sicherheitskopien durchgeschaut und das Problem ist anscheinend schon deutlich länger vorhanden. Kennt jemand eine Notlösung oder muss ich mal wieder alles auf eine neue Rom übertragen?
geschrieben am 07.01.2011 6:06:18 in Allgemeine SMW Hacking Fragen
( Link )
Nein, wie gesagt, wenn ich nach unten drücke, klettert Mario schneller nach unten als wenn ich nach oben drücke. Er klettert in dem Fall langsamer nach unten. Ich schmeiß nachher mal mein Zeug auf eine andere Rom.
geschrieben am 08.01.2011 16:53:50 in Screen Scrolling Pipes Problem
( Link )
Hey,

ich hab ein schwerwiegendes Problem. Wenn ich die Screen Scrolling Pipes von FuSoYa (Version 1.4.2, gibt es auf SMW Central) installiere (egal ob cleane Rom oder editierte), funktionieren diese zwar, sorgen allerdings dafür, dass in dem "Edit Animation Settings" Fenster die Einstellungen verstellt sind (in Level 01 waren zum Beispiel alle vier Häkchen gesetzt). Nach Installation des Patches sieht das Fenster so aus:

Ansich kein Problem, man kann die Einstellungen ja wieder so setzen, wie man es gerne hätte. Pustekuchen. Sobald ich an diesen Einstellungen rumfummele und die ROM mit einem Emulator starte, kriege ich einen Blackscreen, nur die Musik läuft noch. Setze ich den freespace vllt. falsch? Andere Leute kriegen die Pipes doch auch zum Laufen und können dabei noch andere Level editieren ohne Glitches zu kriegen.

Ich habe bereits eine alte LM Version (1.71) und die neuste (1.82) getestet..

Bitte um Hilfe! Möchte ungern auf die Pipes verzichten.