So are you saying objects for the underground levels such as Blue blocks might be causing it to crash?
These are the 3-byte objects that I was referring to in this specific case.

I want to emphasize, again, that I might not be remembering correctly. In any case, when things go wrong, the issue(s) could really be anything. You just have to test out any multiple ideas that you or others might come up with until solutions are discovered.
I never thought about that before, i just assumed the levels can use any such pieces.
You
*can* use those objects. However, if I'm not just remembering the previous universe I warped in from, I believe that there are limitations to where and how you can place them. If you were to follow the directions from the previous post by hunting down for any troublesome objects in real time within an emulator's hex editor - testing object to object, not saving the "FF" byte change so that you can undo it if the current object passes the test of not crashing the game - once you possibly find which object(s) crash(es) the game, if there are any, you can either delete them, or you can try to move their placements to see if you can find a way to use them that doesn't crash the game.
I've had a couple levels in the past that either crashed the game upon entering, or when Mario/Luigi died, he would fly all the way to the right side of the map, the screen would fade and then reload, Mario/Luigi would land on the Start space from the left side of the map, and then he wouldn't be able to move, as the game sending him back to the Start space wasn't the intended way that it was supposed to happen. Through testing out the objects placed in my level, I was able to track down a specific object that, after it was completely removed, that bug didn't occur anymore. I don't remember any additional specific details other than it was an E - Underground Object Set kind of level.
Anyway, if the objects you cycle through appear correct/valid in the editor while you're placing them, and they aren't just "crash" objects and appear like a yellow/red glitch block, then normally, they should be able to be used for your level without any problems (fingers crossed). Remember that there are different objects available depending on the specific Object Set for the level you're currently creating/modifying, so with each new Object Set, it'll take some getting used to at first.
Also is there a way to extend the timer on the Star Powerup or is there a Mario 3 Power-up editor someplace?
Or what was used in the rom hack - Mario Adventure?
Like Jorpho mentioned, there is a disassembly for SMB3 available that you should be able to find if you look for it. However, understandably, it might seem like a lot of code and nonsense if you're only looking at something like it for the first time. Furthermore, depending on how advanced of a hack you're actually making, it might be a bit overkill dealing with the entire disassembly anyway. If your primary goal is just creating new levels and world maps, you should be able to get by with just the general tools. If you want to create new power-ups, game mechanics, or cinematic enhancements, etc. then you'll need to deal with a lot of the inner workings of the ROM, and therefore, the disassembly being available makes larger visions a whole lot easier.
With all that said, I remember the general area in RAM where invincibility and invisibility variables were stored. So, let's take a look to see if we can find anything.
After some playing around and watching how the memory addresses changed in the FCEUX hex editor, I tracked down the star timer to $0553 in RAM. (I recalled it was in this general range from back in the day, so it was easier to narrow down.) Under the Debug menu, I opened the Debugger, and set a write breakpoint to $0553 in CPU Memory.
There is a star in a note block in 1-2, so I played up to that point to collect it. The debugger froze at $A812, or 0x02822 in the ROM.
A810:A9 E0 LDA #$E0
>A812:8D 53 05 STA $0553 = #$00
A815:4C B0 A8 JMP $A8B0
So, the default value for the star timer is
E0, at
0x02821 in the ROM file.
You could max the value out by modifying E0 to
FF in a hex editor.
With the write breakpoint still set, after collecting the star, I pressed the Run button to resume game-play. The debugger froze at $CEE7, or 0x3AEF7 in the ROM.
CEDC:AD 53 05 LDA $0553 = #$E0
CEDF:F0 2A BEQ $CF0B
CEE1:A5 15 LDA $0015 = #$51
CEE3:29 01 AND #$01
CEE5:F0 03 BEQ $CEEA
>CEE7:CE 53 05 DEC $0553 = #$E0
After pressing the Run button a few more times, the "writes" continued to occur at this specific line of code. So, it seems that this is the area where the magic happens of keeping track of how much longer the star power lasts, by first performing the load at $0553 in memory, and if it's not equal to zero, that means that there should still be star power, and the game has to decrement it again.
Now, in theory, if you wanted to extend the amount of time the star power lasts even beyond a value of FF, the maximum possible with only one variable at your disposal, I would like to believe that, if you had an unused memory location to use, you could fit it into the code somewhere in the relevant locations, by writing a specific value to it within the occurrence of first collecting the star, and then to decrement its value around the time of decrementing $0553, if $0553 reaches 00, branch to code that decrements the other relevant location in memory, and then focus on $0553 again, until both are zero, and then the star power would be done. That would be the general idea, anyway. Unfortunately, it might not be that simple, and trying to fit that additional code in would require additional jumps to expanded code elsewhere in free space, or a bunch of frustrating shifts and thrusts.
Something else to consider is when you select a star from your inventory on the world map, and then enter a level.
Mario's 28 items are at $7D80-$7D9B (0x1C in hex) in RAM.
The value for a star is 09. So, give yourself a few "09" values to play with. (Shh... I won't tell anyone.)
Use a star, and then enter a level. When I did this, with the $0553 write breakpoint still active, the debugger froze at $A173, or 0x10183 in the ROM.
A171:A9 E0 LDA #$E0
>A173:8D 53 05 STA $0553 = #$00
So, there are two individual values that would need to be modified to be the same, and if you were to try doing ASM magic to squeeze in another new variable in the mix, you would need to fit in the additional write within this area of code for star power when entering a level from the world map as well.
The default value for the star timer from the world map is
E0, at
0x10182 in the ROM file.
You could max the value out by modifying E0 to
FF in a hex editor, or whatever you modified the value at
0x02821 to be, so that they match.
I recall Mario Adventure did make the star power last longer than what FF alone would seem to allow. So, I checked it out for you. Thankfully, the RAM for Mario's items didn't change, so it was easy to get a star power-up without having to take too much time.
The code for setting the star power appeared familiar, but after pressing the debugger's Run button a few more times, there was some interesting, different code. Relevant addresses: $CEE1 (0x3AEF1 in ROM), $D810 (0x3B820 in ROM), and froze at $D818 (0x3B828 in ROM) for the actual $0553 write breakpoint.
CEE1:A5 15 LDA $0015 = #$43
CEE3:29 01 AND #$01
CEE5:F0 03 BEQ $CEEA
CEE7:20 10 D8 JSR $D810
D810:8D B2 01 STA $01B2 = #$01
D813:AD B3 01 LDA $01B3 = #$00
D816:F0 0D BEQ $D825
>D818:CE 53 05 DEC $0553 = #$DB
D81B:A9 00 LDA #$00
D81D:8D B3 01 STA $01B3 = #$00
D820:AD B2 01 LDA $01B2 = #$01
D823:60 RTS
D824:00 BRK
D825:A9 01 LDA #$01
D827:8D B3 01 STA $01B3 = #$00
D82A:AD 00 F0 LDA $F000 = #$95
D82D:60 RTS
D82E:A5 15 LDA $0015 = #$79
D830:4A LSR
D831:4A LSR
D832:4A LSR
D833:4A LSR
D834:4A LSR
D835:AA TAX
D836:BD 41 D8 LDA $D841,X @ $D87F = #$FF
D839:EA NOP
D83A:EA NOP
D83B:CE 53 05 DEC $0553 = #$CE
D83E:A2 0E LDX #$0E
D840:60 RTS
D841-D848:01 02 03 05 06 05 03 02
$0015 appears to be a timer, and there's some additional fancy code to use $01B3 in the stack to effectively double the amount of time that the $0553 star timer can effectively provide the star power. There's also a data table at $D841-$D848 (0x3B851-0x3B858).
Like with anything, this likely isn't the only way you could go about it. Perhaps directly copying isn't necessarily the way to go either, though I do recall an old post through someone else's words claiming that DahrkDaiz once told them that if they could find the code for something that they wanted, they could use it. You could possibly request permission if you want, or you could refer to this code, yes, but instead of just copying it as it is, you could use it as inspiration, study it, and determine a way that you could effectively program your own super advanced, super increased star timer from scratch, and implement it into your hack.
It's very possible that there's more involved than what I discovered from these tests, but I stopped at this point because it's already a lengthy, involved post, and with the basic concepts and processes there, perhaps more experienced users can provide better insight and directions if you have additional questions that I can't answer because... my planet needs me.
*Gets abducted and thrown into Galactic Prison.*