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.
Oh, for the vertical pipes without the middle part, what actually happened is that upon triggering the top caps, the player is teleported downwards so that his timing when he exits isn't off, thankfully this “back-teleporting” isn't too major. I started testing my pipes with the tides and it seems that it doesn't interfere with the pipe traveling, but the water splash graphic happened during the travel, I don't know where is the code that handles the splash sprite when you enter layer 3 tides.
I restore the game, reinstall the pipe thing, and found out that the fireball bug can be reproduced if you have freezing disabled.
For the fireball part, I believed the error is caused by this on the uberasm library code (so far, mario actually shoots fireballs while inside the pipe, it maybe a frame-perfect timing to exit the pipe while no fireballs are present on the two slots):
LDX #$01 ;\>Start loop count
LDA $15,x ;|
ORA SSP_CarryControlsForceSet,y ;|>Force X and Y on controller to be set when carrying sprites.
AND SSP_CarryControlsForceClear,y ;|>Clear out other than XY and START.
STA $15,x ;|
BPL ...Loop ;/
Noticed that this sets and clears both $15 and $16. $16 is used for the cape and fireball action. This glitch even happens on cape (it only plays the SFX).
I really don't know how yoshi becomes invisible when setting $78, but when yoshi crouches and faces the screen when entering screen scrolling pipes when you set the value on $7E1419, he still does that even if the player is not mounted on him. This works even on the original game with its exit-enabled pipes. That RAM is used because that also controls how you carry sprites through pipes.
Skipped over most of the blocks, lol. They're pretty similar and most of them already but okay. Can't say the same for the UberASM code (which is practically or actually rewritten).
The new addition with the controllable turn corners makes designing the pipes more interesting. It also is a bit similar to FuSoYa's two-way pipes except more flexible and maybe even easier to understand.
The only problem is that Fire Mario drops a fireballs when exiting a pipe (and it even fries any sprite because Mario is considered in the pipe state). The invisible Yoshi glitch also is something to consider (it wouldn't have been as bad if cape and Yoshi weren't aren't affected by the same invisible bit). Maybe adding an option to turn Mario temporarily small à la FuSoYa to fix this problem?
The option to prevent Yoshi entering the pipe also would be nice.