FuSoYa's pipes patch wasn't compatible with Gopher Popcorn Stew, so I uploaded my own.
These pipes, when entered, will cause mario to travel through pipes within the same level rather than refreshing the screen, useful for maze levels for those who refuses to use screen exits (which is a pain).
Whats best is that:
-unlike wiiqwertyuiop's, this centers the player correctly and is impossible to make the pipes play a "pipe sfx" multiple times for entering/exitng the pipe.
-there are several (more like countless) bugs in mikeyK's pipes (outdated) ranging from passable corners, to horizontal pipe caps that you can enter randomly not working should there be a level time limit, all the way to ceiling slopes teleporting mario (or killing him based on y position).
-now there are pipe turn-corners for mini pipes!!
-the best thing ever about this is that GPS has a "block to insert" list, due to having multiple blocks in this package, It made it easier for inserting all the block at once just by copying whats in "pipe_tiles_list.asm" and pasting it in "list.txt". THANK GOD that was faster than tedious editing whats in "edit block database" of btsd and that btsd insert the blocks one by one at a time.
I couldn't fit the description in the print command (they are often long; they would overwrite descriptions of other blocks), but I made a .map16 so its easier to understand.
see the readme for details.
-If there are at least 2 sprites on screen, and mairo enters a pipe, mario will partially disappear as he enters a pipe, you should download the "no more sprite tiles limit" to prevent that.
-If you have a low-gravity generator that DEC $7E:007D (mario's Y speed), make sure that you add a check that if $7E:009D or a ram address for "!pipe_dir" is a non-zero, then skip/return, because mario will then rise up slowly while traveling through horizontal pipes.
-If you have converted ram address (and modify the GPS tool) to be compatable with sa-1, you also have to convert the "sprite slot loop" to use 22 slots. Because SA-1 has updated the number of slots from 12 to 22, otherwise yoshi glitches up.
Be careful not to use them in layer 3 tides, mario's x/y speed is still effected by the tide even when in pipes.
Mod's note: The patch does what it's supposed to do and seems to do so quite reliably. I tested all of the different pipe combinations in different situations and couldn't find any major problems. The included demonstration level certainly helped with testing, so thanks for that. If you want to use these pipes in your hack, make sure to read readme.txt carefully, as the setup is quite involved.
While I couldn't find any major problems that were severe enough to justify rejection of this submission, I did at least find two minor problems that should be taken a look at whenever considering an update for the pipes.
For the first problem: When entering horizontal pipes, Mario never seemed to play his proper "walking into pipe" animation, unless currently riding Yoshi. He just slides into the pipes. Certainly not a big deal, but for more authenticity, you should consider adding this animation in a future update.
For the second problem: The code is a bit unoptimized in a few places. For example, I found code like this in multiple locations:
Hmm, could you create a four-way intersection block? That would be amazing. Perhaps 3-way intersections could be supported with controller input to change direction. Maybe with the use of a sprite you could force a direction change, or lack thereof depending on which way you came. So Mario could go down the pipe, get redirected to a P-Switch Dispenser room on the left, then going back in the pipe from the Switch room he would be directed the rest of the way down. You could have different redirects for each direction, based on what sprite data was set.
I still can't figure out how to use these, every time I try the horizontal pipes work fine, but in level 105 Mario keeps flashing through different invalid powerup states (which means glitched palette), and the pipes themselves act weird, like if there's a bend the screen scrolls the way Mario entered forever. Might post a gif or a video of it soon.
I observed that the program bank was not equal to the data bank in routines/SmallBlockHitbox.asm, and the blocks changing the directions didn't work properly. You may want to use LDA.l to access the table (maybe in some other block codes too).
When mario enters or exits from a pipe, sprites(especially ones consisting of multiple tiles) won't be drawn correctly, even with the NMSTL patch. This can be resolved by setting the value of $13F9 to #$02, instead of #$01.
Springboard clears $1471, and $72 at the last moment of jumping.
It will let Mario to enter the pipe, and glitch like below.
I didn't come up with the best solution, but for right now, just add code so pipes will not let Mario in when he has upward speed.
I think I found a bug maybe?
I used one of the old versions so I am not sure.
However, this is fatal, because it causes game crash. (not glitchy but pauses forever)
Could you verify this and possibly fix it please?