Huh, I wonder if this can be exploited somehow. I don't really see how it could.
Originally posted by SMW Glitch List
Mario will "stick" to any platform sprites while running up walls via a purple triangle, slowing him down to the speed of the platform until it passes by. One notable use of this is that it even applies to the animation at the end of a wall where Mario reorients himself, but his horizontal speed will remain unaffected, which can cause him to clip into the tiles in the next column over. It should be noted that this works with the solid platform sprites as well, but only if Mario enters at a position where he doesn't get warped out of it
That way ^
TheBiob Shelly de Killer
Posts: 2/1438
Since:
Location: Germany
But first we need to talk about parallel universesberries
Wait... That glitch wasn't known before?!?!? I found out about this Glitch when a German Youtuber played a Glitch puzzle Hack over two Years ago where he accidentally did this Glitch though I didn't know what it caused until about one Year ago where I played around with this glitch and used it to break this exact Level from the Glitch Puzzle hack (Video) Also I actually used the fact that the green tile gets placed on the next screen in my own Glitch Puzzle Level. I was pretty sure I've seen it on this list too but guess not because now I can't find it here.
TheBiob Shelly de Killer
Posts: 3/1438
Since:
Location: Germany
Afaik the patch doesn't fix the issue with the hardcoded y position of the Birds.
Originally posted by Final Theory
I tried using the dissassembly of them and insert them as a custom sprite, but the same things apparently happens
If you just took the disassembly without adjusting the y position it won't work just edit this code in the disassmebly:
CODE_02F353: CMP.b #$E8 ; <- Set this number to the y position you want the bird to be one (Haven't tested it but should work)
TheBiob Shelly de Killer
Posts: 4/1438
Since:
Location: Germany
If Yoshi has his tongue on the sprite while hit by the fireball, the piranha plant will move out of place and will not exit down the pipe and will be on top of the object.
That can happen in pretty much every hack and i don't think there is a patch for that yet (Maybe never will be idk how hard it would be to fix this but feel free to correct me)
Originally posted by mte_95
First one let Yoshi carry item through pipe without swallowing
I don't think there is a patch for that either again correct me if I'm wrong
@starslayer How do you link the exit tiles? Are you sure both have a Tile Exit index?
TheBiob Shelly de Killer
Posts: 5/1438
Since:
Location: Germany
Anyway, if you just want to carry the p-switch to another Level you need to use a pipe. Doors/teleport blocks will not stick the item to the player and it will not be transfered to another level (at least no teleport block I know sticks the item to the player)
If you want to carry the p-switch to another Level via the ender chest block you'd need to find a way to fix the glitch with the changing color otherwise the p-switch might change color if you take it out of this block
TheBiob Shelly de Killer
Posts: 6/1438
Since:
Location: Germany
For the block: You need to make a Custom block which spawns a custom sprite. For that just use the routine from Gopher Popcorn Stew assuming you have some knowledge about ASM
For the sprite: If you just want the normal directional coin with used blocks instead of coins then change this part in the disassembly:
Code
[...]
LDA PLUE_POW_TIMER;
BEQ BLUE_POW_SET ; <- That was a BNE before (just to toggle the graphic the sprite uses)
[...]
LDA #$0D ; <- That number was 06 (Coin) before
STA $9C
JSL $00BEB0 ;generate tile
[...]
If you also want the coinsnake to move automatically like in C|C - Gnarly I have no idea sorry
TheBiob Shelly de Killer
Posts: 7/1438
Since:
Location: Germany
;; Uses first extra bit: YES
;; If the extra bit is clear, the sprite will not be affected by gravity
;; If the extra bit is set, the sprite will be affected by gravity
EXTRA_BITS = $7FAB10
TIMER = $07 ; Must be a power of two minus one. If the value is higher the sprite will spawn things less frequently
; sprite init JSL
dcb "INIT"
RTL
; sprite code JSL
dcb "MAIN"
PHB ; \
PHK ; | main sprite function, just calls local subroutine
PLB ; |
JSR SPRITE_CODE_START ; |
PLB ; |
RTL ; /
; sprite main code
SPRITE_CODE_START
LDA EXTRA_BITS,x; \ make the sprite fall down if extra bit is set
AND #$04 ; |
BEQ NoFallDown ; /
JSR $01802A ; Update sprite position with gravity
NoFallDown
LDA $13 ; \ if the frame is set...
AND #TIMER ; /
ORA $9D ; or locked...
JSR SET_SPARKLE_POS
RETURN RTS ; return
; set sparkle position routine
SET_SPARKLE_POS ORA $186C,x ; or the vertical sprite off screen flag is set...
ORA $9D ; or locked...
BNE RETURN2 ; return
JSL $01ACF9 ; \ set random routine
AND #$0F ; /
CLC ;
LDY #$00 ; \ set x location (low and high byte)
ADC #$FC ; |
BPL SKIP ; |
DEY ; |
SKIP CLC ; |
ADC $E4,x ; |
STA $02 ; |
TYA ; |
ADC $14E0,x ; /
PHA ;
LDA $02 ; \ set position in the screen
CMP $1A ; |
PLA ; |
SBC $1B ; /
BNE RETURN2 ;
LDA $148E ; \ set y location (low byte)
AND #$0F ; |
CLC ; |
ADC #$FE ; |
ADC $D8,x ; |
STA $00 ; /
LDA $14D4,x ; \ set y location (high byte)
ADC #$00 ; |
STA $01 ; /
JSR DISPLAY_SPARKLE ; display sparkle routine
RETURN2 RTS ; return
;; display sparkle routine
DISPLAY_SPARKLE LDY #$0B ; \ find a free slot to display effect
FINDFREE LDA $17F0,y ; |
BEQ FOUNDONE ; |
DEY ; |
BPL FINDFREE ; |
RTS ; / return if no slots open
FOUNDONE LDA #$05 ; \ set effect graphic to sparkle graphic
STA $17F0,y ; /
LDA #$00 ; \ set time to show sparkle
STA $1820,y ; /
LDA $00 ; \ sparkle y position
STA $17FC,y ; /
LDA $02 ; \ sparkle x position
STA $1808,y ; /
LDA #$17 ; \ load generator x position and store it for later
STA $1850,y ; /
RTS ; return
Like that? I just removed the graphic part of this 7-up moon and made the sprite use gravity if the extra bit is set
TheBiob Shelly de Killer
Posts: 11/1438
Since:
Location: Germany
It might be possible to do it with a Hex edit but I have no idea where to edit
However you can use the disassembly and change the XSpeed and YSpeed table which is probably easier than figuring out where to hex edit (Unless the address is documented somewhere and I didn't find it in that case nevermind)
TheBiob Shelly de Killer
Posts: 12/1438
Since:
Location: Germany
Are you sure you set "!flip_gravity" to the value given to you by the patch
Originally posted by Readme
Once this patch is inserted, asar should output "flip_gravity is located at: $location". In order to flip gravity in your code, use JSL $location; modify the !flip_gravity defines in the included ASM.
I used this patch with BTSD too and it worked fine
TheBiob Shelly de Killer
Posts: 13/1438
Since:
Location: Germany
For your first problem:
The formula is (2^n)-1 but the numbers that your program gives you are decimal (Base-10) not hexadecimal (Base-16) so you need to convert the decimal number (31) into a hex number (1F) which is what the original goalsphere uses if I'm not mistaken when your number isn't from this formula this wave thing happens
For your second problem:
Add the underlined check to the code (This code assumes that you never enabled vertical scrolling as it won't display the effect above this point)
Code
[...]
NoFallDown
LDA $14D4,x
BNE DontCheck
LDA $D8,x
CMP #$B0
BCC RETURN
DontCheck
LDA $13 ; \ if the frame is set...
AND #TIMER ; /
[...]
For the second part of your second problem:
Is it possible that the goal block you used acts like 130 (Or anything else solid) if so the sparkle sprite gets placed on top of the goalsphere and not inside since it gets pushed out if not i have no idea what causes it
TheBiob Shelly de Killer
Posts: 15/1438
Since:
Location: Germany
You need to set SP4 to 02 for the correct bomb graphics.
You can see which graphic file a sprite needs when you go to Lunar Magic and select the sprite in the "Add Sprites Window". On the top left is a note that shows you which graphic files need to be loaded for the sprite to look right (Unless your ExGFX file has these graphics too then you can use that instead)
TheBiob Shelly de Killer
Posts: 17/1438
Since:
Location: Germany
I don't think I'll submit this to the sprite section especially because I haven't tested this sprite in every situation and the check doesn't work if you have vertical scrolling enabled because as I said it only checks if it is above a certain point
Anyways, for your code problem: You probably shouldn't return when mario doesn't touch the sprite otherwise it won't display the effect either (Unless you put it after the effect part then the problem would be that the check only happens when a new effect thing happens too)
I'd probably put it there:
Code
[...]
NoFallDown
;---------------------------------------------------------------;
JSL $01A7DC ; check for Mario/sprite contact (carry set = contact)
BCC NoCont ; return if no contact
STZ $14C8,x ; disappear the sprite
NoCont
;---------------------------------------------------------------;
LDA $14D4,x
[...]
Also for this code to work you need to enable "don't use default interaction with mario" and "process interaction with mario every frame" in the cfg editor
Code
01
36
00 00 3B A2 29 40
00 00
[name here].asm
0
TheBiob Shelly de Killer
Posts: 18/1438
Since:
Location: Germany
The problem is that you defined the label "InitGradient1" twice in your code. Now, I don't have the code but the best way to fix this would probably be to rename one of the "InitGradient1"s to "InitGradient2" assuming you don't have that label yet.
If both label have the same code you can probably just remove one of them completely
Edit: You just linked the code...
As far as i can see you don't even use those two labels anywhere so you can just remove them (Or put a ; infront of those two lines)
TheBiob Shelly de Killer
Posts: 20/1438
Since:
Location: Germany
I don't see where you use this "InitGradient1" label you never jump to it and even if you did you could've used the "levelinit12" label (or "levelinit15" label for the other one) instead since there is no code in between those two labels (Unless i'm missing something obvious again)
Follow Us On