Language…
8 users online: EduX, fcast, Heitor Porfirio, kakisen, lRichieBiersack, Shinmaru, Tandy, TheClassicOne88 - Guests: 69 - Bots: 94
Users: 70,575 (2,473 active)
Latest user: edy

Sprites on Platforms and Springs and Stuff

  • Pages:
  • 1
  • 2


Download
Note: SA-1 is recommended, as this gets really heavy on the processing.


This patch basically makes sprites interact with platform-type sprites as you would expect them to: they walk on them instead of falling through them.
Solid block type sprites like Message Boxes and the Light Switch are properly activated by thrown objects as well.
Includes options to make P-Switches and Keys solid to sprites as well, letting you stack them or other sprites on top of them, like you can in Super Mario Maker.
While I was at it, I added spring functionality too, allowing sprites to bounce on the wall peas and letting you throw springboards under unsuspecting Thwomps, Goombas and co.

The first two GIFs are a tad old, I've since fixed the visual bug of sprites sinking into platforms slightly #wario{:peace:}

Tested with some of the most used custom sprites as well as a few of my own, so you shouldn't run into any problems using those.
The site description/asm file has a few pointers if you do have trouble with custom sprites (and are a programmer).
>patch by leod
>thread's posted by medic

Huh
Um, not sure how I apply this to the game, but it seems great. Help?
Oh god, I always thought something like this would be rad. Gonna look into integrating this to my hack if it doesn't break my existing levels too badly. Lots of great design potential here!
Originally posted by Chillahbyte
Um, not sure how I apply this to the game, but it seems great. Help?

It's applied like any other patch. Are you familiar with that?

If not, just grab Asar, put it in the same folder as the patch (.asm) and your ROM (.smc or .sfc), and run it. Things should be self-explanatory from that point on.

(Patching wasn't always this user-friendly - xkas, the tool people used to use, would instantly close when opened, instead requiring you to run it via the command line like many programmers' tools do. Asar is nicer to the less tech-savvy in that regard.)


 
i patch this to my hack when i was test out one level i think this is a issue with the patch somehow all the Dino-Rhinos are fall off ground.
Best 100th thread ever

Edit: I think there's also an error with the feather dealing with priority. Maybe that's just on my end idk
The same freaking person who made the Submap Split patch (that was awesome!). You are one amazing being, Medic. #tb{:j}

Originally posted by chineesmw
5.) How would I make more small submaps?

Details: By submaps, I mean like Yoshi's Island, Vanilla Dome, Forest of Illusion, Star Road, Bowser's Valley, and Special World NOT the Overworld Submap. There's only 6 small submaps in the default SMW, but I would want to make it at least 9.


Originally posted by chineesmw
45.) How would I make a platform sprite act like a platform to other sprites?

Details: This idea was inspired by Super Mario Maker since sprites can interact with a sprite platform, I'm wondering if this is possible in SMW as well. I don't think that I've found a sprite similar to this in the "SMW Sprites" section, so I can't really... I forgot the word... hijack / rip it?


Because of you, I now believe in the impossible. Lol #tb{'U'}


EDIT: Hold up... this patch was created by leod... I thought Medic created it, huh? That's embarrassing of what I said earlier, I got confused, but still this is a really great patch leod, You are an amazing being as well! #tb{:j}
My YouTube Channel
Best SMW Hacks Compilation
Appears that the lotus loses sprite interaction when the game calculates how many fireballs to generate, which is odd considering it only ever interacts with the player, Yoshi and shells.

Also, something I've been meaning to ask: How much does one sprite-on-platform take up, sprite memory wise? Is it more or less than a charging chuck or a goomba?
Let's milk Sunny Milk. Then she'll have enough money to fund Sunny Milk Real Estate.
Everypony's digging with a shovel
Platform takes one sprite slot, same as everything else (unless they spawn more sprites, like Football Chuck or Lakitu).

About six OAM slots; I think sprites default to having five slots allocated each, but it could be six. Doesn't really matter these days, No More Sprite Tile Limits is happy to get rid of that limit.
<blm> zsnes users are the flatearthers of emulation
I know this is the farthest thing from vanilla, but imagine if we patch this to the base ROM for next year's VLDC. We'd get some insanely creative entries I bet.

Regardless, killer patch leod. When more things support sa-1 this is going to be standard.
VLDC already uses SA-1 anyway #wario{B)}
Your layout has been removed.
Originally posted by allowiscous
I know this is the farthest thing from vanilla, but imagine if we patch this to the base ROM for next year's VLDC. We'd get some insanely creative entries I bet.


Incoming MarioMaker esque levels, inbound in 9 months! RIP VLDC. Hello VLDCXtreme!
Submitted a few updates the past few days to fix some sorta major bugs, re-download if you're using this patch.
Your layout has been removed.
I saw GreenHammerBro's readme in his Platform pass fix patch:

Originally posted by GreenHammerBro
NOTE: ALL spinning/rotating platforms are not fixed. This is because:

1) They don't use Y speed for the platform movement around a center point.


So I can see why Rotating Platforms do not work with this while Vertical Checkerboard and Rocky Platforms do work. However, how come this patch does not work with Vertical Dolphin (43)?

EDIT: Actually, why does Hammer Brother Platform work while Rotating Platforms does not?, just curious.
My YouTube Channel
Best SMW Hacks Compilation
It's because the rotating platforms are black magic and I couldn't fix them after hours of messing around. Sometimes they work, sometimes they just don't, not sure what's going on at all.
Your layout has been removed.
I still want to code a custom sprite version of the rotating platforms that's more sensible than the originals are. I never got it to work, though. Of course, getting speed values out of that would mean you'd have to take the derivative of a circle function, and given that you have the polar coordinates, it seems like there should be an easier way. Anyone more mathematically-inclined than me (or at least anyone who remembers more of their high school and college calculus classes than me) want to take a gander at that?

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Let's assume
x = 2 cos 3t radians
y = 2 sin 3t radians
just to pick something where the size constants show up in the result.

Then

x' = D(2 cos 3t) = 2 D(cos 3t) = -6 sin 3t radians
y' = D(2 sin 3t) = 2 D(sin 3t) = 6 cos 3t radians

Now let's check some more realistic numbers.

Let's assume one loop per 3 seconds (180 frames), counterclockwise, and radius 64 pixels. Let's also use SMW's sine table, with 128 entries and cos(0)=256; we call these functions ĉos and ŝin, and use square brackets to make it clear they're arrays. ĉos[0] = ĉos[128] = 256. Let's call the frame counter T.

First, let's find the correct X/Y functions.

ĉos[z*128]/256 = cos(z*2pi) (ignoring rounding errors)
ĉos[z/2pi*128]/256 = cos(z)
x = cos(T/180*2pi)*64
x = ĉos[T/180*2pi/2pi*128]/256*64
x = ĉos[T/180*128]/4

x' = D(ĉos[T/180*128]/4)
x' = 1/4 D(ĉos[T/180*128])
x' = 1/4 1/180*128 * -ŝin[T/180*128]
x' = -128/4/180 ŝin[T/180*128]
x' = -128/4/180 ŝin[T/180*128]

More generally,
T = frame counter
F = frames per loop
R = radius in pixels
f = entries in the sine table
r = largest entry in the sine table

x = R/r ĉos[T f/F]
x' = -R/r f/F ŝin[T f/F]

For y, replace cos with sin and sin with -cos (which cancels the minus signs).

If rounding errors creep in, you can subtract the entries instead:

x' = R/r (ĉos[T f/F] - ĉos[T f/F - 1])

Either way, hope you like multiplying stuff on this SNES thing.
<blm> zsnes users are the flatearthers of emulation
Also this:


Quote
Can be done (this is in my opinion) like this:
Code
	LDA $AA,x
	BMI .Negative
	LDA #$00
	XBA
	BRA .SetScrchRm
.Negative
	LDA #$FF
	XBA
.SetScrchRm
	REP #$20
	STA $00
	SEP #$20

^repeat that but instead, but store it to $02 instead for the other sprite. Then compare:
Code
	REP #$20
	LDA $00
	CMP $02
	SEP #$20
	BMI .RamZeroIsFasterUpwards


Yeah, if both sprites are going upwards and the platform is going upwards faster, the platform will assume that the other rising sprite is going up through from below. Unfortunately, this allows the sprite to fall through from above since the entire platform goes passable because the sprite is going upwards relative to layer 1 instead of the platform sprite.


Never compare sprite that is on a platform relative with layer 1. Compare it relative to platform sprite instead. I'm okay if there is a problem with the rotating platform issue, since there is no fix discovered yet.
Give thanks to RPG hacker for working on Asar.
  • Pages:
  • 1
  • 2