Banner
Views: 236,565,161
Time: 2013-05-24 02:36:44 PM
27 users online: Akireyano, BullockDS, Donaldthescotishtwin, o Doopy Buckride, o Ersanio, everest700, HyperMario, Incognito, Kazeshin, Kieran Menor, o Ladida, LaughingLuigi, Lester_Vine, Luckiest3, o Luigi-San, MarioBros980, Masterlink, MaxodeX, MolSno, Purple Rex, RaindropDry, Reggie, savageguy1345, o ShadowPhoenix, Sokobansolver, o Tahixham, o Undy - Guests: 141 - Bots: 14Users: 22,881 (1,274 active)
Latest: Shizufuzu
Tip: Make sure that ALL exit-enabled pipes, doors, etc. lead somewhere, or else they'll take you to level 0 (the "endless" bonus game).
Posts by Blittle McNilsen
Blittle McNilsen's Profile - Posts by Blittle McNilsen
Pages: « 1 2 3 4 5 6 ... 26 27 »
Does the SMW Player Tilemap Editor work with the Separate Luigi Graphics patch? I asked this in my other thread, but I have not yet received a reply, so I made a separate thread to see if I would get an answer quicker.
Does the SMW Player Tilemap Editor work with the Separate Luigi Graphics patch?
Originally posted by MrDeePay
Originally posted by Blittle McNilsen
Thanks. Also, does the Mario Tilemap Editor work with the Separate Luigi Graphics patch?



Use the patch version (because the Tool version is apparently screwy) and try it out for yourself first.

I can't seem to find it in the Patches section.
Title says it all. What is the most recommended version of Addmusic at the moment?
Originally posted by Kipernal
If you're looking for something simple that can play the majority of the songs on this site, you'll want HuFlungDu's Addmusic. If you really want to experiment with your own stuff and have more customization power, you'll want AddmusicM, but be warned that the latter is difficult to use correctly.

I was thinking of making a custom song out of this midi. So which would be the best one for that?
I inserted a squashable goomba with SpriteTool, and I want its graphics to use Palette 6 instead of the pallete it currently uses. How do I point it to use Pallete 6?
Originally posted by wiiqwertyuiop
Let me see your code.

Okay, but be warned, it's pretty long.

Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Classic Goomba, by mikeyk ;; ;; Description: A classic squashable goomba. ;; ;; Uses first extra bit: NO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; goomba init JSL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; dcb "INIT" PHY JSR SUB_HORZ_POS TYA STA $157C,x PLY RTL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; goomba main JSL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; dcb "MAIN" PHB ; \ PHK ; | main sprite function, just calls local subroutine PLB ; | JSR GOOMB_CODE_START ; | PLB ; | RTL ; / ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; goomba main code ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; X_SPEED dcb $08,$F8 KILLED_X_SPEED dcb $F0,$10 GOOMB_CODE_START JSR GOOMB_GRAPHICS ; graphics routine LDA $14C8,x ; \ CMP #$08 ; | if status != 8, return BNE RETURN ; / JSR SUB_OFF_SCREEN_X0 ; handle off screen situation LDY $157C,x ; \ set x speed based on direction LDA X_SPEED,y ; | STA $B6,x ; / LDA $9D ; \ if sprites locked, return BNE RETURN ; / LDA $1558,x ; \ if sprite not defeated (timer to show remains > 0)... BEQ ALIVE ; / ... goto ALIVE STA $15D0,x ; \ DEC A ; } if sprite remains don't disappear next frame... BNE RETURN ; / ... return STZ $14C8,x ; this is the last frame to show remains, so set sprite status = 0 (not alive) RETURN RTS ; return ALIVE LDA $1588,x ;A:0100 X:0007 Y:0001 D:0000 DB:03 S:01EF P:envMXdiZCHC:0276 VC:077 00 FL:623 AND #$04 ;A:0100 X:0007 Y:0001 D:0000 DB:03 S:01EF P:envMXdiZCHC:0308 VC:077 00 FL:623 PHA ;A:0100 X:0007 Y:0001 D:0000 DB:03 S:01EF P:envMXdiZCHC:0324 VC:077 00 FL:623 JSL $01802A ; update position based on speed values JSL $018032 ; interact with other sprites LDA $1588,x ;A:254B X:0007 Y:0007 D:0000 DB:03 S:01EE P:envMXdizcHC:0684 VC:085 00 FL:623 AND #$04 ;A:2504 X:0007 Y:0007 D:0000 DB:03 S:01EE P:envMXdizcHC:0716 VC:085 00 FL:623 BEQ IN_AIR ;A:2504 X:0007 Y:0007 D:0000 DB:03 S:01EE P:envMXdizcHC:0732 VC:085 00 FL:623 STZ $AA,x ;A:2504 X:0007 Y:0007 D:0000 DB:03 S:01EE P:envMXdizcHC:0748 VC:085 00 FL:623 PLA ;A:2504 X:0007 Y:0007 D:0000 DB:03 S:01EE P:envMXdizcHC:0778 VC:085 00 FL:623 BRA ON_GROUND ;A:2500 X:0007 Y:0007 D:0000 DB:03 S:01EF P:envMXdiZcHC:0806 VC:085 00 FL:623 IN_AIR PLA ;A:2500 X:0007 Y:0006 D:0000 DB:03 S:01EB P:envMXdiZcHC:0316 VC:085 00 FL:4955 BEQ WAS_IN_AIR ;A:2504 X:0007 Y:0006 D:0000 DB:03 S:01EC P:envMXdizcHC:0344 VC:085 00 FL:4955 LDA #$0A ;A:2504 X:0007 Y:0006 D:0000 DB:03 S:01EC P:envMXdizcHC:0360 VC:085 00 FL:4955 STA $1540,x ;A:25FF X:0007 Y:0006 D:0000 DB:03 S:01EC P:eNvMXdizcHC:0376 VC:085 00 FL:4955 WAS_IN_AIR LDA $1540,x ;A:25FF X:0007 Y:0006 D:0000 DB:03 S:01EC P:eNvMXdizcHC:0408 VC:085 00 FL:4955 BEQ ON_GROUND ;A:25FF X:0007 Y:0006 D:0000 DB:03 S:01EC P:eNvMXdizcHC:0440 VC:085 00 FL:4955 STZ $AA,x ;A:25FF X:0007 Y:0006 D:0000 DB:03 S:01EC P:eNvMXdizcHC:0456 VC:085 00 FL:4955 ON_GROUND LDA $1588,x ; | if sprite is in contact with an object... AND #$03 ; | BEQ DONT_UPDATE ; | LDA $157C,x ; | flip the direction status EOR #$01 ; | STA $157C,x ; / DONT_UPDATE JSL $01A7DC ; check for mario/sprite contact BCC RETURN_24 ; (carry set = contact) LDA $1490 ; \ if mario star timer > 0 ... BNE HAS_STAR ; / ... goto HAS_STAR LDA $7D ; \ if mario's y speed < 10 ... CMP #$10 ; } ... sprite will hurt mario BMI GOOB_WINS ; / MARIO_WINS JSR SUB_STOMP_PTS ; give mario points JSL $01AA33 ; set mario speed JSL $01AB99 ; display contact graphic LDA $140D ; \ if mario is spin jumping... ORA $187A ; } ... or on yoshi ... BNE SPIN_KILL ; / ... goto SPIN_KILL LDA #$20 ; \ ... time to show defeated sprite = $20 STA $1558,x ; / RETURN_24 RTS ; return GOOB_WINS LDA $1497 ; \ if mario is invincible... ORA $187A ; } ... or mario on yoshi... ORA $15D0,x ; | ...or sprite being eaten... BNE RETURN2 ; / ... return JSR SUB_GET_DIR ; \ set new sprite direction TYA ; } STA $157C,x ; / JSL $00F5B7 ; hurt mario RETURN2 RTS ; return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; spin and star kill (still part of above routine) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; STAR_SOUNDS dcb $00,$13,$14,$15,$16,$17,$18,$19 SPIN_KILL LDA #$04 ; \ status = 4 (being killed by spin jump) STA $14C8,x ; / LDA #$1F ; \ set spin jump animation timer STA $1540,x ; / JSL $07FC3B ; show star animation LDA #$08 ; \ play sound effect STA $1DF9 ; / RTS ; return HAS_STAR LDA #$02 ; \ status = 2 (being killed by star) STA $14C8,x ; / LDA #$D0 ; \ set y speed STA $AA,x ; / JSR SUB_HORZ_POS ; get new direction LDA KILLED_X_SPEED,y ; \ set x speed based on direction STA $B6,x ; / INC $18D2 ; increment number consecutive enemies killed LDA $18D2 ; \ CMP #$08 ; | if consecutive enemies stomped >= 8, reset to 8 BCC NO_RESET2 ; | LDA #$08 ; | STA $18D2 ; / NO_RESET2 JSL $02ACE5 ; give mario points LDY $18D2 ; \ CPY #$08 ; | if consecutive enemies stomped < 8 ... BCS NO_SOUND2 ; | LDA STAR_SOUNDS,y ; | ... play sound effect STA $1DF9 ; / NO_SOUND2 RTS ; final return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; graphics routine ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;frame 1, frame 2, squashed, star killed (2 bytes each) TILE_SIZE dcb $02,$02,$02,$02,$00,$00,$02,$02 GOOMB_HORIZ_DISP dcb $00,$00,$00,$00,$00,$08,$00,$00 GOOMB_VERT_DISP dcb $00,$00,$00,$00,$08,$08,$00,$00 GOOMB_TILEMAP dcb $88,$88,$88,$88,$38,$38,$88,$88 GOOMB_PROPERTIES dcb $00,$00,$40,$40,$00,$40,$80,$80 GOOMB_GRAPHICS JSR GET_DRAW_INFO LDA $157C,x ; \ $02 = direction STA $02 ; / LDA $14 ;\ LSR A ; | LSR A ; | LSR A ; | CLC ; | ADC $15E9 ; | AND #$01 ; | ASL A STA $03 ; | $03 = index to frame start (0 or 2) PHX ; / LDA $14C8,x CMP #$02 BNE NO_STAR LDA #$06 STA $03 NO_STAR LDA $1558,x ; \ if time to show sprite remains > 0... BEQ NOT_DEAD ; | LDA #$04 ; | $03 = 4 STA $03 ; / STX $15E9 NOT_DEAD LDX #$01 ; run loop 4 times, cuz 4 tiles per frame LOOP_START_2 PHX ; push, current tile TXA ; \ X = index of frame start + current tile CLC ; | ADC $03 ; | TAX ; / PHY ; set tile to be 8x8 or 16x16 TYA ; LSR A ; LSR A ; TAY ; LDA TILE_SIZE,x ; STA $0460,y ; PLY ; LDA $00 ; \ tile x position = sprite x location ($00) + tile displacement CLC ; | ADC GOOMB_HORIZ_DISP,x ; | STA $0300,y ; / LDA $01 ; | CLC ; | tile y position = sprite y location ($01) + tile displacement ADC GOOMB_VERT_DISP,x ; | STA $0301,y ; / LDA GOOMB_TILEMAP,x ; \ store tile STA $0302,y ; / PHX ; LDX $15E9 ; LDA $15F6,x ; get palette info PLX ; ORA GOOMB_PROPERTIES,x ; flip tile if necessary ORA $64 ; add in tile priority of level STA $0303,y ; store tile properties PLX ; \ pull, current tile INY ; | increase index to sprite tile map ($300)... INY ; | ...we wrote 1 16x16 tile... INY ; | ...sprite OAM is 8x8... INY ; | ...so increment 4 times DEX ; | go to next tile of frame and loop BPL LOOP_START_2 ; / PLX ; pull, X = sprite index LDY #$FF ; \ we've already set 460 so use FF LDA #$01 ; | A = number of tiles drawn - 1 JSL $01B7B3 ; / don't draw if offscreen RTS ; return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; points routine ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SUB_STOMP_PTS PHY ; LDA $1697 ; \ CLC ; | ADC $1626,x ; / some enemies give higher pts/1ups quicker?? INC $1697 ; increase consecutive enemies stomped TAY ; INY ; CPY #$08 ; \ if consecutive enemies stomped >= 8 ... BCS NO_SOUND ; / ... don't play sound LDA STAR_SOUNDS,y ; \ play sound effect STA $1DF9 ; / NO_SOUND TYA ; \ CMP #$08 ; | if consecutive enemies stomped >= 8, reset to 8 BCC NO_RESET ; | LDA #$08 ; / NO_RESET JSL $02ACE5 ; give mario points PLY ; RTS ; return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; routines below can be shared by all sprites. they are ripped from original ; SMW and poorly documented ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $B760 - graphics routine helper - shared ; sets off screen flags and sets index to OAM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;org $03B75C TABLE1 dcb $0C,$1C TABLE2 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 TABLE1,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 TABLE2,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 ; / ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $B817 - horizontal mario/sprite check - shared ; Y = 1 if mario left of sprite?? ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;org $03B817 ; Y = 1 if contact SUB_GET_DIR LDY #$00 ;A:25D0 X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizCHC:1020 VC:097 00 FL:31642 LDA $94 ;A:25D0 X:0006 Y:0000 D:0000 DB:03 S:01ED P:envMXdiZCHC:1036 VC:097 00 FL:31642 SEC ;A:25F0 X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizCHC:1060 VC:097 00 FL:31642 SBC $E4,x ;A:25F0 X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizCHC:1074 VC:097 00 FL:31642 STA $0F ;A:25F4 X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizcHC:1104 VC:097 00 FL:31642 LDA $95 ;A:25F4 X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizcHC:1128 VC:097 00 FL:31642 SBC $14E0,x ;A:2500 X:0006 Y:0000 D:0000 DB:03 S:01ED P:envMXdiZcHC:1152 VC:097 00 FL:31642 BPL LABEL16 ;A:25FF X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizcHC:1184 VC:097 00 FL:31642 INY ;A:25FF X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizcHC:1200 VC:097 00 FL:31642 LABEL16 RTS ;A:25FF X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizcHC:1214 VC:097 00 FL:31642 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $B829 - vertical mario/sprite position check - shared ; Y = 1 if mario below sprite?? ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;org $03B829 SUB_VERT_POS LDY #$00 ;A:25A1 X:0007 Y:0001 D:0000 DB:03 S:01EA P:envMXdizCHC:0130 VC:085 00 FL:924 LDA $96 ;A:25A1 X:0007 Y:0000 D:0000 DB:03 S:01EA P:envMXdiZCHC:0146 VC:085 00 FL:924 SEC ;A:2546 X:0007 Y:0000 D:0000 DB:03 S:01EA P:envMXdizCHC:0170 VC:085 00 FL:924 SBC $D8,x ;A:2546 X:0007 Y:0000 D:0000 DB:03 S:01EA P:envMXdizCHC:0184 VC:085 00 FL:924 STA $0F ;A:25D6 X:0007 Y:0000 D:0000 DB:03 S:01EA P:eNvMXdizcHC:0214 VC:085 00 FL:924 LDA $97 ;A:25D6 X:0007 Y:0000 D:0000 DB:03 S:01EA P:eNvMXdizcHC:0238 VC:085 00 FL:924 SBC $14D4,x ;A:2501 X:0007 Y:0000 D:0000 DB:03 S:01EA P:envMXdizcHC:0262 VC:085 00 FL:924 BPL LABEL11 ;A:25FF X:0007 Y:0000 D:0000 DB:03 S:01EA P:eNvMXdizcHC:0294 VC:085 00 FL:924 INY ;A:25FF X:0007 Y:0000 D:0000 DB:03 S:01EA P:eNvMXdizcHC:0310 VC:085 00 FL:924 LABEL11 RTS ;A:25FF X:0007 Y:0001 D:0000 DB:03 S:01EA P:envMXdizcHC:0324 VC:085 00 FL:924 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $B817 - horizontal mario/sprite check - shared ; Y = 1 if mario left of sprite?? ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;org $03B817 SUB_HORZ_POS LDY #$00 ;A:25D0 X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizCHC:1020 VC:097 00 FL:31642 LDA $94 ;A:25D0 X:0006 Y:0000 D:0000 DB:03 S:01ED P:envMXdiZCHC:1036 VC:097 00 FL:31642 SEC ;A:25F0 X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizCHC:1060 VC:097 00 FL:31642 SBC $E4,x ;A:25F0 X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizCHC:1074 VC:097 00 FL:31642 STA $0F ;A:25F4 X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizcHC:1104 VC:097 00 FL:31642 LDA $95 ;A:25F4 X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizcHC:1128 VC:097 00 FL:31642 SBC $14E0,x ;A:2500 X:0006 Y:0000 D:0000 DB:03 S:01ED P:envMXdiZcHC:1152 VC:097 00 FL:31642 BPL LABEL16 ;A:25FF X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizcHC:1184 VC:097 00 FL:31642 INY ;A:25FF X:0006 Y:0000 D:0000 DB:03 S:01ED P:eNvMXdizcHC:1200 VC:097 00 FL:31642 LABEL16 RTS ;A:25FF X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizcHC:1214 VC:097 00 FL:31642 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $B85D - off screen processing code - shared ; sprites enter at different points ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;org $03B83B TABLE3 dcb $40,$B0 TABLE6 dcb $01,$FF TABLE4 dcb $30,$C0,$A0,$80,$A0,$40,$60,$B0 TABLE5 dcb $01,$FF,$01,$FF,$01,$00,$01,$FF SUB_OFF_SCREEN_X0 LDA #$06 ; \ entry point of routine determines value of $03 BRA STORE_03 ; | SUB_OFF_SCREEN_X1 LDA #$04 ; | BRA STORE_03 ; | SUB_OFF_SCREEN_X2 LDA #$02 ; | STORE_03 STA $03 ; | BRA START_SUB ; | SUB_OFF_SCREEN_HB STZ $03 ; / START_SUB JSR SUB_IS_OFF_SCREEN ; \ if sprite is not off screen, return BEQ RETURN_2 ; / 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_2 ; / LDA $13 ; \ AND #$01 ; | ORA $03 ; | STA $01 ; | TAY ; / LDA $1A ;x boundry ;A:0101 X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizcHC:0256 VC:090 00 FL:16953 CLC ;A:0100 X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdiZcHC:0280 VC:090 00 FL:16953 ADC TABLE4,y ;A:0100 X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdiZcHC:0294 VC:090 00 FL:16953 ROL $00 ;A:01C0 X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizcHC:0326 VC:090 00 FL:16953 CMP $E4,x ;x pos ;A:01C0 X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizcHC:0364 VC:090 00 FL:16953 PHP ;A:01C0 X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizCHC:0394 VC:090 00 FL:16953 LDA $1B ;x boundry hi ;A:01C0 X:0006 Y:0001 D:0000 DB:03 S:01EC P:eNvMXdizCHC:0416 VC:090 00 FL:16953 LSR $00 ;A:0100 X:0006 Y:0001 D:0000 DB:03 S:01EC P:envMXdiZCHC:0440 VC:090 00 FL:16953 ADC TABLE5,y ;A:0100 X:0006 Y:0001 D:0000 DB:03 S:01EC P:envMXdizcHC:0478 VC:090 00 FL:16953 PLP ;A:01FF X:0006 Y:0001 D:0000 DB:03 S:01EC P:eNvMXdizcHC:0510 VC:090 00 FL:16953 SBC $14E0,x ;x pos high ;A:01FF X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizCHC:0538 VC:090 00 FL:16953 STA $00 ;A:01FE X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizCHC:0570 VC:090 00 FL:16953 LSR $01 ;A:01FE X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizCHC:0594 VC:090 00 FL:16953 BCC LABEL20 ;A:01FE X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdiZCHC:0632 VC:090 00 FL:16953 EOR #$80 ;A:01FE X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdiZCHC:0648 VC:090 00 FL:16953 STA $00 ;A:017E X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizCHC:0664 VC:090 00 FL:16953 LABEL20 LDA $00 ;A:017E X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizCHC:0688 VC:090 00 FL:16953 BPL RETURN_2 ;A:017E X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizCHC:0712 VC:090 00 FL:16953 ERASE_SPRITE LDA $14C8,x ; \ if sprite status < 8, permanently erase sprite CMP #$08 ; | BCC KILL_SPRITE ; / LDY $161A,x ;A:FF08 X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdiZCHC:0140 VC:071 00 FL:21152 CPY #$FF ;A:FF08 X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizCHC:0172 VC:071 00 FL:21152 BEQ KILL_SPRITE ;A:FF08 X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizcHC:0188 VC:071 00 FL:21152 LDA #$00 ; \ mark sprite to come back A:FF08 X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizcHC:0204 VC:071 00 FL:21152 STA $1938,y ; / A:FF00 X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdiZcHC:0220 VC:071 00 FL:21152 KILL_SPRITE STZ $14C8,x ; erase sprite RETURN_2 RTS ; return VERTICAL_LEVEL LDA $167A,x ; \ if "process offscreen" flag is set, return AND #$04 ; | BNE RETURN_2 ; / LDA $13 ; \ only handle every other frame?? LSR A ; | BCS RETURN_2 ; / AND #$01 ;A:0227 X:0006 Y:00EC D:0000 DB:03 S:01ED P:envMXdizcHC:0228 VC:112 00 FL:1142 STA $01 ;A:0201 X:0006 Y:00EC D:0000 DB:03 S:01ED P:envMXdizcHC:0244 VC:112 00 FL:1142 TAY ;A:0201 X:0006 Y:00EC D:0000 DB:03 S:01ED P:envMXdizcHC:0268 VC:112 00 FL:1142 LDA $1C ;A:0201 X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizcHC:0282 VC:112 00 FL:1142 CLC ;A:02BD X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizcHC:0306 VC:112 00 FL:1142 ADC TABLE3,y ;A:02BD X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizcHC:0320 VC:112 00 FL:1142 ROL $00 ;A:026D X:0006 Y:0001 D:0000 DB:03 S:01ED P:enVMXdizCHC:0352 VC:112 00 FL:1142 CMP $D8,x ;A:026D X:0006 Y:0001 D:0000 DB:03 S:01ED P:enVMXdizCHC:0390 VC:112 00 FL:1142 PHP ;A:026D X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNVMXdizcHC:0420 VC:112 00 FL:1142 LDA.W $001D ;A:026D X:0006 Y:0001 D:0000 DB:03 S:01EC P:eNVMXdizcHC:0442 VC:112 00 FL:1142 LSR $00 ;A:0200 X:0006 Y:0001 D:0000 DB:03 S:01EC P:enVMXdiZcHC:0474 VC:112 00 FL:1142 ADC TABLE6,y ;A:0200 X:0006 Y:0001 D:0000 DB:03 S:01EC P:enVMXdizCHC:0512 VC:112 00 FL:1142 PLP ;A:0200 X:0006 Y:0001 D:0000 DB:03 S:01EC P:envMXdiZCHC:0544 VC:112 00 FL:1142 SBC $14D4,x ;A:0200 X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNVMXdizcHC:0572 VC:112 00 FL:1142 STA $00 ;A:02FF X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizcHC:0604 VC:112 00 FL:1142 LDY $01 ;A:02FF X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizcHC:0628 VC:112 00 FL:1142 BEQ LABEL22 ;A:02FF X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizcHC:0652 VC:112 00 FL:1142 EOR #$80 ;A:02FF X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizcHC:0668 VC:112 00 FL:1142 STA $00 ;A:027F X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizcHC:0684 VC:112 00 FL:1142 LABEL22 LDA $00 ;A:027F X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizcHC:0708 VC:112 00 FL:1142 BPL RETURN_2 ;A:027F X:0006 Y:0001 D:0000 DB:03 S:01ED P:envMXdizcHC:0732 VC:112 00 FL:1142 BMI ERASE_SPRITE ;A:0280 X:0006 Y:0001 D:0000 DB:03 S:01ED P:eNvMXdizCHC:0170 VC:064 00 FL:1195 SUB_IS_OFF_SCREEN LDA $15A0,x ; \ if sprite is on screen, accumulator = 0 ORA $186C,x ; | RTS ; / return NOP
Originally posted by wiiqwertyuiop
Replace the x's with one of these:

000 = Palette 8
001 = Palette 9
010 = Palette A
011 = Palette B
100 = Palette C
101 = Palette D
110 = Palette E
111 = Palette F

I do not see Palette 6 anywhere on there.
I double click Snes9X to open it, but it does not open. I mean, I double click it, and literally nothing happens!
Originally posted by camoslash
Same thing happened to me, I had to get version 1.52 (or was it 1.51?), and then it worked fine.

I have 1.51 installed already, I thought I might as well upgrade to 1.53 since somebody said that it is recommended to use at least Snes9X 1.52 for SMW hacking purposes but I guess I just have to stick with 52 or 51. Thanks.
How exactly do you play a hack on the SNES? I don't see how that is possible without like hooking up your computer to a SNES console or something.

EDIT: This post is now null because I saw that my question was answered earlier in the thread.
Last edited on 2011-06-09 06:33:42 PM by Blittle McNilsen.
Where are the animation tiles for the Para-Goomba's wing graphics stored at?
Originally posted by tmercswims
Check these out, they most likely are what you are looking for.
08FC7$01:8DC716 bytesSprite tilemap relatedGoomba Wing alignment, X position. First 8 bytes are for the alignment when the goomba's hopping left, the other 8 when he's hopping into the right direction.
08FDF$01:8DDF2 bytesSprite tilemap relatedPalette/GFX page/Priority/Flip of Goomba Wing Tiles
08FE1$01:8DE14 bytesSprite tilemap relatedSprite tilemap: Goomba Wings
08FE5$01:8DE54 bytesSprite tilemap relatedSize of Goomba Wing tiles

I mean like which GFX file(s) they are in.
I want to insert a sprite that requires the use of Xkas to assemble. Is there some special thing I need to do to assemble it with Xkas, or do I just load up SpriteTool and insert it like I usually would with normal custom sprites?

I am using Romi's SpriteTool.
Originally posted by Alcaro
The CFG tells if TRASM or xkas should be used, so no, you don't need to do anything special.

Okay thanks. :D
I recently downloaded the Ultimate n00b Boss Sprite and made a custom boss out of it, and it's fairly easy to use, but I have one question: How do I change the palette it uses? It is currently using palette 0B and I want to change it to use palette 0D.
Originally posted by Maxodex
Edit the cfg file that comes with the asm file with a cfg editor.

Thank you. ^_^
Title says it all. How do I enable the rewind button in Snes9x?
Originally posted by ninja boy
You can't Snes9X doesn't have rewind

That sucks. :(
I downloaded an SMAS SMB1 Bowser's Castle graphics and put it into my boss battle level, and it does this:


As you can see, the status bar palettes are all screwed up, as well as the palettes used in the message displayed from the boss sprite. So can somebody tell me where I can get this same ExGFX except it doesn't overwrite those palettes?
Last edited on 2011-06-12 03:14:51 PM by Blittle McNilsen.
Pages: « 1 2 3 4 5 6 ... 26 27 »
Blittle McNilsen's Profile - Posts by Blittle McNilsen

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2013 - SMW Central
Legal Information - Link To Us


Total queries: 27

Menu