Language…
20 users online: cletus_deletus, DanMario24YT, Domokun007, GRIMMKIN, Heitor Porfirio, hhuxy, iRhyiku, JezJitzu, Knetog, LightAligns, Maw, Nayfal, Nemesis1407, ocked, PMH, sinseiga, SMW Magic,  Tahixham, TheXander, yoshiatom - Guests: 302 - Bots: 390
Users: 64,795 (2,375 active)
Latest user: mathew

GreenHammerBro's SMB3 screen scrolling pipes 3.2.14

SMW Blocks → GreenHammerBro's SMB3 screen scrolling pipes 3.2.14

This file is obsolete. The latest version is SMB3 Screen Scrolling Pipes 4.0.2. For other versions, check the version history.

Submission Details

Name: GreenHammerBro's SMB3 screen scrolling pipes 3.2.14
Author: HammerBrother
Added:
Version History: View
Act As: 130
Includes GFX: Yes
Description: 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.

Notes:
-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.

You can now use these pipes in layer 3 tides.
Tags: lorom maze pipes sa-1
Comments: 70 (jump to comments)
Rating:
5.0 (5 ratings)
No rating
Download 512.50 KiB | 1,787 downloads

Screenshots

View all

Comments (70)

PermaBan Link
Originally posted by Jigokusaru
I followed the readme.html to a tee, and when i start a level with a pipe, Mario glitches out and acts as Super Mario, instead of small Mario.


Sounds like you didn't remove test.asm from the list for level 105 in the uberasm list.
Jigokusaru Link
I followed the readme.html to a tee, and when i start a level with a pipe, Mario glitches out and acts as Super Mario, instead of small Mario.

HammerBrother Author Link
Some bugs I found that are in this version:
-Turn block bridge that expand vertically (sprite 59) had a faulty restore code:
Code
Sprite_TurnBlockHV_pos:         ;>JML from $01B882
	LDA !Freeram_SSP_PipeDir
	AND.b #%00001111
	BEQ .Restore

	JML $01B8B1

	.Restore
	LDA $0D
	CLC
	ADC #$1F
	JML $01B8B1


Change the red number to $01B887 to fix the issue.
Anas Link
If these pipes don't work properly, then it's always a freespace conflict unless you improperly modified the blocks or the UberASM code themselves.

I have been frustrated with these pipes for quite a few months, and I cannot stress the following rule of thumb any further: make sure to edit both copies of the defines file in the correct directories, such as the 'blocks' folder in GPS and the same directory your UberASMTool is in. If you have have a copy of the 'SPP_Defines' folder outside those important directories and you replace the defines file there, then surely you're missing something!

And a high recommendation: use this patch to free up a whopping 16 KB of arbitrary freespace, starting from $7F0000 to $7F3FFF. This freespace will thus be safe to use in the long run. Wish you the best of luck! Your frustration with these pipes should now be put to an end!
Thiago678 Link
Originally posted by System64
Yours pipes seems good but I have a serious problem with MarioE's Reverse Gravity #tb{D:}

Same.Someone needs to make it compatible with Reverse Gravity.
El Cuh Fermin Link
Originally posted by DKR_02
Originally posted by Fermín Acosta Jr.
I think is incompatible with wall kick
This is compatible with wall kick (I'm assuming you are talking about the wall kick uberasm.) They are probably just using the same freeram


I didn't used the uberasm version, I used patch version.

Edit: Never mind, it works now
DKR_02 Link
Originally posted by Fermín Acosta Jr.
I think is incompatible with wall kick
This is compatible with wall kick (I'm assuming you are talking about the wall kick uberasm.) They are probably just using the same freeram
El Cuh Fermin Link
I think is incompatible with wall kick
KazakhGuy Link
Great!
skyekun Link
Edit: I fixed it.
Fusoya's pipes truly are cursed.
Ramenoodles Link
WOW! These are great! Thanks for making these, i really like the fact that they have turn corners for mini-pipes. :)
qantuum Link
I don't get why but it is not compatible wih vertical levels. It works smooth in horizontal levels.
iTom33.ro Link
Originally posted by VoxelRoguery
I can't enter ANY of the pipes from the side, but they work up and down?!

Try to apply Fixes.asm
westslasher2 Link
Here is a fix for the softlock that happens after entering the pipe while dying if anyone wants it.

Just replace this
Code
LDA $71					;\Prevent potential glitch that the player enters pipe and dies
CMP #$09				;|during travel (if freezing enabled, at the same frame the players interacts a pipe cap).
BNE .PipeStateCheck			;|
RTL					;/


with this
Code
.DeathAnimationCheck
LDA $71					;\Prevent potential glitch that the player enters pipe and dies
CMP #$09				;|during travel (if freezing enabled, at the same frame the players interacts a pipe cap).
BNE .PipeStateCheck			;|
.ScreenScrollingPipeHandle
LDA !Freeram_SSP_PipeDir
BEQ .Return

..ResetPipeStatus
LDA #$00
STA !Freeram_SSP_PipeDir		;\Reset pipe state.
STA !Freeram_SSP_PipeTmr		;|
STA !Freeram_SSP_EntrExtFlg		;/
STA !Freeram_SSP_CarrySpr		;\Remove any carryable sprites.
STA !Freeram_BlockedStatBkp		;/
.Return
RTL	



HammerBrother Author Link
Originally posted by Samuel Zuccati
When using those with retry you can get locked if you die on the same frame you enter a pipe, is there a way I can prevent that?


Ooh, seems that the check:
Code
	LDA $71					;\Prevent potential glitch that the player enters pipe and dies
	CMP #$09				;|during travel (if freezing enabled, at the same frame the players interacts a pipe cap).
	BNE .PipeStateCheck			;|
	RTL					;/

What type of bug are you getting. Did the game first reload the level, and then get locked there? Or did it get locked right when you enter the pipe?
Samie Zuccati Link
When using those with retry you can get locked if you die on the same frame you enter a pipe, is there a way I can prevent that?
Leithen Link
Originally posted by foley200
I finally have everything working right apart from the connectors. They show up in map16 as yellow blocks with no detail on them. They don’t load properly although they do function right. Any ideas?


For me this was an issue with the ExGFX settings. I believe BG3 needs to be set to 80, assuming you kept the GFX file name the same.
Xgen_Product Link
this gave me an amazing idea for some graphics... Clear pipes... i just hope that the way you did it was just change the prioty of the blocks to be in front of mario instead of hiding them... but ill find out
BoxedApplePie Link
I can't enter ANY of the pipes from the side, but they work up and down?!
foley200 Link
I finally have everything working right apart from the connectors. They show up in map16 as yellow blocks with no detail on them. They don’t load properly although they do function right. Any ideas?
oizo666 Link
Hey How do I change "simply change $PPNN (or $PNN)"?
need to put them on page 5. otherwise it works great.
System64 Link
Yours pipes seems good but I have a serious problem with MarioE's Reverse Gravity #tb{D:}
oderjunks Link
It does not work...
worldpeace Link
I've read your comment regarding the freeram reset issue in retry's comment section. While I'm going to do some small stuff to my patch, for maximum abstraction, I would like to suggest you to modify your part so that the gamemode routine resets those free ram addresses used by pipe when mario's dying ($71 is set to $09). Preferably .ResetStatus could be called (except for STZ $71).
This could also fix the reset issue which could happen when you die in a pipe and use $7Fxxxx as freeram, even if you don't use retry.
HammerBrother Author Link
Quote
in which they flicker really fast when Mario hits some of the turning tiles


Yeah, I've should noted that on the readme about that. It is very likely to see this flicker for sprites larger than 16x16 (for example: the giant koopa), especially for small screen scrolling pipes. The reason for this is that only the player becomes invisible after the entering animation timer hits zero, the carried sprite remains visible and therefore can “poke” outside the pipe.

And also, thank you for testing and reporting.
 Major Flare Link
Aside of the Yoshi bug you mentioned, I caught a tiny bug involving sprites carried through the pipes, in which they flicker really fast when Mario hits some of the turning tiles. Other than that, good job fixing your codes. Despite the bugs I mentioned, I'm willing to accept this as they're minor things, and the Yoshi bug was present in the last hosted version. The change is this the "Fixes" patch works now.
HammerBrother Author From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.7 Link
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.
 MarioFanGamer From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.7 Link
For some reason, I had the sentence about the invisible Yoshi unfinished, lol.

I also forgot to write that vertical pipes acts a bit weird if they haven't got a middle part. See the second to last obstacle in the demo level.
HammerBrother Author From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.7 Link
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):
Code
	..ForceControlsSetAndClear
	LDX #$01				;\>Start loop count
	
	...Loop					;|
	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				;|
	DEX					;|
	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.
 MarioFanGamer From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.7 Link
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.
Ralshi02 From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
i not can inser the block
Nitrocell Inc. From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
Dude, not works.
IHMPRKB123 From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
El parche Fixes lo arreglo LOL
The Fixes patch fix it lol
IHMPRKB123 From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
No funcionan las tuberías horizontales
The horizontal tubes do not work
mish1 From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
Do you need to use uberASM? Or Is It just optional to insert the uberASM code?
Luigi_master1 From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
I don't think these are compatible with the wall jump patch.
 RPG Hacker From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
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:

Code
	LDA !Freeram_PipeDir	;\set pose according to direction.
	CMP #$01		;|\Vertical direction
	BEQ ....Vert		;||
	CMP #$03		;||
	BEQ ....Vert		;||
	CMP #$05		;||
	BEQ ....Vert		;||
	CMP #$07		;||
	BEQ ....Vert		;|/
	CMP #$02		;|\Horizontal direction
	BEQ ....Horiz		;||
	CMP #$04		;||
	BEQ ....Horiz		;||
	CMP #$06		;||
	BEQ ....Horiz		;||
	CMP #$08		;||
	BEQ ....Horiz		;//


Consider rewriting the code like this to save cycles and bytes:

Code
	LDA !Freeram_PipeDir
	AND #$01
	BEQ ....Horiz

....Vert
	; [...]

....Horiz
	; [...]


That being said, none of these problems affects functionality or is a game breaker in my books, that's why I went ahead and accepted the submission, anyways.
Hyperfenix From older version: GreenHammerBro's SMB3 screen scrolling pipes Link
I got an error about an "unknown macro" which was %SmallMarioHitbox.
Queman From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
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.
HammerBrother Author From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
You probably forgot to remove the INC $19 code in the test files of uberasm tools. Also be careful that you don't reuse RAM that is currently used by non-screen scrolling pipes related code.
Luigi_master1 From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
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.
worldpeace From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
Thanks for the useful blocks!

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.
C4RL0S-PR From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
thanks for this update now I can use your pipes.
Konata Izumi From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
uses uberasm?
C4RL0S-PR From older version: GreenHammerBro's SMB3 screen scrolling pipes Link
Can You Make A Video Tutorial Of How To Install, I'm Stock At the uberASM thing.
HammerBrother Author From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
There should be a code somewhere in the springboard, hijack it to check if the pipe freeram is set, if true, don't set those RAMs.
SkywinDragoon From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
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.

like..
LDA $7D
BMI return
SkywinDragoon From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link

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?
Anas From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
Whoops. Looks like I was mistaken.
Anas From older version: GreenHammerBro's SMB3 screen scrolling pipes 3.2.1 Link
Oh great, I was gonna use the SA-1 compatible ver. 3.0.
I'm not gonna use THIS 'cuz you konw. No sa-1 tag, thus no SA-1 usability.
HammerBrother Author From older version: GreenHammerBro's SMB3 screen scrolling pipes Link
Originally posted by jesus
Hi again,

I found another glitch in your scrolling pipes code, and thought you might want to know. The issue occurs when you try to enter a horizontal pipe while standing on any downward-moving sprite platforms. You can enter them if you press jump at the perfect time, but this is rather counter-intuitive and goes against how the vanilla pipes behave.

Thanks again for the cool patch/blocks.


Don't place sprite platform near pipes.
JackTheSpades From older version: GreenHammerBro's SMB3 screen scrolling pipes Link
Yay, I don't have to organize stuff in subfolders on my own anymore.
Everything else seems unedited and inserted just fine.
HammerBrother Author From older version: GreenHammerBro's SMB3 screen scrolling pipes Link
Will convert the blocks Sa-1 if Sa-1 GPS released.
Galeth From older version: GreenHammerBro's SMB3 screen scrolling pipes Link
I tried with FuSoYa's pipes before, but it didn't actually work. I remember that I made something like this just by setting a secondary entrance that leads to the other end of the pipe. Some homemade stuff while waiting for a fixed version of this.
Chillah From older version: GreenHammerBro's SMB3 screen scrolling pipes Link
It's great that these are actually implemented as blocks rather than patches. Also, this is really neat and useful. It would work really nicely for transporting the player across the map easily. Also great for puzzles.
HammerBrother Author From older version: GreenHammerBro's SMB3 screen scrolling pipes Link
Thanks.
DiscoTheBat From older version: GreenHammerBro's SMB3 screen scrolling pipes Link
I like the concept of screen scrolling pipes rather than patches.
Anas From older version: GreenHammerBro's SMB3 screen scrolling pipes (latest version) Link
Hello? I said the uberASM code doesn't seem to work. When I enter it, it just becomes non-solid and play the pipe sound at the same time.
Anas From older version: GreenHammerBro's SMB3 screen scrolling pipes (latest version) Link
Hello? I said the uberASM code doesn't seem to work. When I enter it, it just becomes non-solid and play the pipe sound at the same time. Also can you make this SA-1 compatible?
HammerBrother Author From older version: GreenHammerBro's SMB3 screen scrolling pipes (latest version) Link
Note that this doesn't work on layer 2 levels.
Anas From older version: GreenHammerBro's SMB3 screen scrolling pipes (latest version) Link
I can't insert this in my hack. Sure, I can insert the blocks but when I put the code in gamemode_14, save it and insert it, the code doesn't seem to work. Am I supposed to set the gamemode hijack to !false? Cause I really want to use ASM in my hack.
Anas From older version: GreenHammerBro's SMB3 screen scrolling pipes (latest version) Link
I can't insert this in my hack. Sure, I can insert the blocks but when I put the code in gamemode_14, save it and insert it, the code doesn't seem to work. Am I supposed to set the gamemode hijack to !false? Cause I really want to use ASM in my hack.
HammerBrother Author From older version: GreenHammerBro's SMB3 screen scrolling pipes (latest version) Link
Did you change he freeram in the defs file?
DJfour7 From older version: GreenHammerBro's SMB3 screen scrolling pipes (latest version) Link
I have a problem, when I try to insert the blocks it says "blocks/top_vertical_pipe_cap_L.asm:30: error: Relative branch out of bounds (distance is 137) [BCS return]".

I did not modify that file at all, so I'm just wondering what could be the problem here. (For extra info, this only started happening when I remembered to set the freespace in the uberASM file and the pipe_defs.txt file.)
HammerBrother Author From older version: GreenHammerBro's SMB3 screen scrolling pipes (latest version) Link
@Kaisaan Siddiqui

It should work, if you select freeram that isn't used by other stuff, you should be fine.

@[everyone]

It doesn't need exit tiles in front of the pipe caps, as the caps themselves do the exit timer, that means you can put any tile in front and it won't glitch your pipes.
Kaisaan From older version: GreenHammerBro's SMB3 screen scrolling pipes (latest version) Link
So now this can work on an unclean rom?
HammerBrother Author From older version: GreenHammerBro's SMB3 screen scrolling pipes (latest version) Link
@MarkD

I'm not sure, I tested this on a edited level rom (so LM adds stuff to it).
MarkVD100 From older version: GreenHammerBro's SMB3 screen scrolling pipes (latest version) Link
It looks great, it's kinda hard to use this thing. The readme is too confusing for me.

Also, does this require an unedited ROM to do this?
HammerBrother Author From older version: GreenHammerBro's SMB3 screen scrolling pipes (latest version) Link
@Erik557
Fixed typo.
 Erik From older version: GreenHammerBro's SMB3 screen scrolling pipes (latest version) Link
who is mairo