Allgemeine SMW Hacking Fragen

geschrieben am 01.06.2012 15:40:44
( Link )
Hi,

Ich wollte gerne mal wissen wie man eine Paletten reihe Kopieren kann und in einem Anderen LVL diese Paletten reihe einfügen kann. (KEINE KOMPLETTE PALETTE NUR EINE REIHE)
DreamIsland wird episch <!-- s:o -->:o<!-- s:o -->
geschrieben am 01.06.2012 15:51:45
( Link )
Strg-Alt-Linksklick zum Kopieren, Strg-Alt-Rechtsklick zum Einfügen.
Abiturklausuren (schamlos geklaut von spinatkuchen >_>):
Deutsch (26.3.): Alles reingebracht, was ich wollte, bereue nichts, insgesamt ganz gutes Gefühl (Ergebnis: 8 Punkte - Hm, hätte mit mehr gerechnet.)
Geschichte (1.4.): Fast nichts zum historischen Kontext gewusst, Rest war ganz okay, vielleicht noch 3, eher 4 (Ergebnis: 7 Punkte - Hey, das hätte schlechter sein können. Keine Nachprüfung!)
Mathe (2.4.): Viel besser als gedacht, bis auf 'nen kleinen Teil fast alles richtig, 1 ist gut möglich (Ergebnis: 14 Punkte - Yay!)
Englisch (9.4.): Sprachlich keine Sorgen, inhaltlich etwas mehr, gutes bis sehr gutes Gefühl (Ergebnis: 15 Punkte - Der Lehrer mag mich halt.)
Physik (mdl., 10.5.): Bis auf zwei winzige Wissenslücken sehr einfach und sehr gut gelaufen (Ergebnis: 13 Punkte - Sehr in Ordnung!)
geschrieben am 01.06.2012 16:08:18
( Link )
Zitat von WYE:
Strg-Alt-Linksklick zum Kopieren, Strg-Alt-Rechtsklick zum Einfügen.

Danke, ist ja total einfach
DreamIsland wird episch <!-- s:o -->:o<!-- s:o -->
geschrieben am 04.06.2012 18:49:04
( Link )
Eigentlich nur Strg+Linksklick.


Ich hab' mal eine Frage zur Framerate von Mario World.
Bei der Ex Animation von (z.B) Wasserfällen fällt mir auf, dass die Tiles nicht gleichzeitig, sondern nacheinander gezeigt werden, was nicht schön aussieht. Habe es auch mit mehreren Emu's ausprobiert doch das ergebnis bleibt das gleiche. Was könnte man machen, oder was könnte ich falsch gemacht haben?
geschrieben am 04.06.2012 19:22:44
( Link )
Steht in der geupdateten Version vom ExAnimations Tutorial XD.

Zitat von ExAnimations Tutorial:
Jeder 8 Slot animiert zur selben Zeit, das heißt: Slots 0,8,10,18 und 1,9,11,19 usw. anmieren zur gleichen Zeit.


SollteMUSS dein Problem lösen
Tutorials: ExAnimation | YouTube: W4mp3 | Twitter: https://twitter.com/SMWW4mp3
geschrieben am 04.06.2012 22:23:02
( Link )
Ich wusste nun nicht wirklich wo ich die Frage hinstecken soll...
Also ich brauch einen H-DMA + ASM Code der den Screen unten und oder oben Verdunkelt...
DreamIsland wird episch <!-- s:o -->:o<!-- s:o -->
geschrieben am 05.06.2012 11:34:29
( Link )
Zitat von W4mp3:
Steht in der geupdateten Version vom ExAnimations Tutorial XD.

Zitat von ExAnimations Tutorial:
Jeder 8 Slot animiert zur selben Zeit, das heißt: Slots 0,8,10,18 und 1,9,11,19 usw. anmieren zur gleichen Zeit.


SollteMUSS dein Problem lösen


Ah! Super, danke! Werd's gleich mal ausprobieren!
geschrieben am 05.06.2012 19:39:28
( Link )
Hi ich hätt mal 2 Fragen
1. Gibt es irgendwo eine Aulistung welcher Befehl wieviel Rechenzeit/Takte (milesekunden vllt auch?) braucht?
2. Gibt es eine Auflistung aller SNES Hadware Mirrors und deren Bedeutung?
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 05.06.2012 19:45:06
( Link )
Zitat von mzünni:
1. Gibt es irgendwo eine Aulistung welcher Befehl wieviel Rechenzeit/Takte (milesekunden vllt auch?) braucht?

Variiert oft (hängt von der Größe von A/X/Y und sicher noch einigem mehr ab), aber hier.

Zitat von mzünni:
2. Gibt es eine Auflistung aller SNES Hadware Mirrors und deren Bedeutung?

Du meinst Register, nicht Mirrors, richtig? regs.txt
Abiturklausuren (schamlos geklaut von spinatkuchen >_>):
Deutsch (26.3.): Alles reingebracht, was ich wollte, bereue nichts, insgesamt ganz gutes Gefühl (Ergebnis: 8 Punkte - Hm, hätte mit mehr gerechnet.)
Geschichte (1.4.): Fast nichts zum historischen Kontext gewusst, Rest war ganz okay, vielleicht noch 3, eher 4 (Ergebnis: 7 Punkte - Hey, das hätte schlechter sein können. Keine Nachprüfung!)
Mathe (2.4.): Viel besser als gedacht, bis auf 'nen kleinen Teil fast alles richtig, 1 ist gut möglich (Ergebnis: 14 Punkte - Yay!)
Englisch (9.4.): Sprachlich keine Sorgen, inhaltlich etwas mehr, gutes bis sehr gutes Gefühl (Ergebnis: 15 Punkte - Der Lehrer mag mich halt.)
Physik (mdl., 10.5.): Bis auf zwei winzige Wissenslücken sehr einfach und sehr gut gelaufen (Ergebnis: 13 Punkte - Sehr in Ordnung!)
geschrieben am 05.06.2012 20:05:07
( Link )
na dann mal sehen ob ich meinen Windowing HDMA code so optimiren kann ,dass es nicht bei 5 sprites oder so schon slowdowns gitb
Und ja meinte die Register ^^ ist zumindest das was ich gesucht habe
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 06.06.2012 16:12:56
( Link )
Es gibt ja Sprites, die den Screen dunkler machen.
Gibt es auch Blöcke, die leuchten (um sich einen helleren Lichtkreis haben als der Rest) und die Mario herumtragen kann?
geschrieben am 06.06.2012 16:20:36
( Link )
Geben tut es die nicht, und funktionieren wird das noch weniger. Der arme arme SNES schafft leider beim Windowing nur 2 Ränder (falls ich mich irre) und mit HDMA würde es auch nicht funktionieren. Einzige, was noch funktionieren könnte, wäre eine Art Powerup, bei der man Leuchtet und somit den Lichtkreis um den Spieler vergrößert .

tl;dr: Nein, der SNES ist zu schwach dafür.
Tutorials: ExAnimation | YouTube: W4mp3 | Twitter: https://twitter.com/SMWW4mp3
geschrieben am 06.06.2012 17:26:59
( Link )
Ok, dann alternativer Weg

Wie schaff ich es das das springende Feuer (der Sprite) nicht Springt sondern nur auf der Stelle steht.
(der leuchtet ja auch ein bisschen)
geschrieben am 06.06.2012 18:18:58
( Link )
Zitat von kooooopa:

Wie schaff ich es das das springende Feuer (der Sprite) nicht Springt sondern nur auf der Stelle steht.

Kannst entweder [Disassembly] Hopping Flame nehmen und umschreiben oder du machst blöcke, die nur Mario durchlassen (Hüpfen tut der noch, aber abhauen kann der nicht).
Zitat von kooooopa:
(der leuchtet ja auch ein bisschen)

Erkläre mir mal, was das hier zu bedeuten hat, ich versteh grad nicht, was du da möchtest.
Tutorials: ExAnimation | YouTube: W4mp3 | Twitter: https://twitter.com/SMWW4mp3
geschrieben am 06.06.2012 19:04:32
( Link )
Ok, das heißt, wenn ich eigentlich nur will, dass die Flame vorhanden ist reicht das hier als Code?

Code
!EXTRA_BITS = $7FAB10


print "INIT ",pc

JSL $01ACF9
STA $1570,X
FaceMario: JSR SUB_HORZ_POS
TYA
STA $157C,X
RTL

print "MAIN ",pc
PHB
PHK
PLB
JSR HoppingFlame
PLB
RTL


Den Rest bräuchte ich ja nicht, weil die Flame sich nicht bewegen soll, oder?
geschrieben am 06.06.2012 19:25:45
zuletzt bearbeitet von mzünni am 06.06.2012 19:31:33.
( Link )
du brauchst aufjedefall noch die graphics routine und die anderen labels die noch benutzt werden XD
und auch die contact routine (es sei denn es soll nicht mit mario interagiren)

Code
; ==================================
; HOPPING FLAME DISASSEMBLY
; DISASSEMBLED BY ERSANIO
; USES EXTRA BIT: YES
; When you set the extra bit,
; The flame keeps following Mario
; ==================================

!EXTRA_BITS = $7FAB10


print "INIT ",pc
RTL

print "MAIN ",pc
PHB
PHK
PLB
JSR HoppingFlame
PLB
RTL

Tiletable: db $8E,$AE

HoppingFlame: LDA $9D ; \ Branch if sprites locked
BNE label0 ; /

JSL $01A7DC ;mario sprite interact routine
label0: JSR SUB_OFF_SCREEN_X0 ;SUB_OFF_SCREEN
JSR SubSprGfx2Entry1 ;spritegfx routine. finish this
RTS ; Return

SubSprGfx2Entry1: JSR GET_DRAW_INFO

LDA $00 ;\
STA $0300,y ;/setup X position

LDA $01 ;\
STA $0301,y ;/setup Y position

PHX
LDA $14 ; \ Change animation image every 8 cycles
LSR ; |
LSR ; |
LSR ; |
AND #$01 ; ...
TAX
LDA Tiletable,x
STA $0302,y
PLX ; /

PHX ;\
LDX $15E9 ; |
LDA $15F6,x ; |
PLX ; |Setup properties
ORA $64 ; |
STA $0303,y ;/

LDY #$02 ; #$02 means the tiles are 16x16
LDA #$00 ; This means we drew one tile
JSL $01B7B3 ;finish up OAM routine
RTS

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

SPR_T12: db $40,$B0
SPR_T13: db $01,$FF
SPR_T14: db $30,$C0,$A0,$C0,$A0,$F0,$60,$90 ;bank 1 sizes
db $30,$C0,$A0,$80,$A0,$40,$60,$B0 ;bank 3 sizes
SPR_T15: db $01,$FF,$01,$FF,$01,$FF,$01,$FF ;bank 1 sizes
db $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 $1D ;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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; GET_DRAW_INFO
; This is a helper for the graphics routine. It sets off screen flags, and sets up
; variables. It will return with the following:
;
; Y = index to sprite OAM ($300)
; $00 = sprite x position relative to screen boarder
; $01 = sprite y position relative to screen boarder
;
; It is adapted from the subroutine at $03B760
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SPR_T1: db $0C,$1C
SPR_T2: db $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

INVALID: PLA
PLA
RTS ; return
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 06.06.2012 19:28:34
( Link )
Habs jetzt anders gelöst, einfach die Flammengrafiken aus dem 8*8 Editor genommen und auf Act like Muncher gestellt.
Jetzt muss ich nur noch schauen, wie ich die Flamme animiere.
geschrieben am 06.06.2012 19:32:47
( Link )
Code
LDA $14 ; \ Change animation image every 8 cycles
LSR ; |
LSR ; |
LSR ; |
AND #$01 ; ...



(hab oben den Code noch eingefügt...)
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 06.06.2012 19:38:58
( Link )
Danke!
geschrieben am 14.06.2012 19:21:53
( Link )
Hallo Leude
ich hab ein Problem: Seitdem ich den Hintergrund in einem Level geändert habe, sind die ganzen Hintergründe der anderen Lvls, die nicht bearbeitet wurde, verglicht. Woran kann das liegen und kann man das noch irgendwie beheben?