News:

Don't forget to visit the main site! There's lots of helpful docs, patches, and more!

Main Menu

[SM] Will make ASM for you

Started by Tundain, April 02, 2023, 04:20:13 PM

Previous topic - Next topic

Tundain

So,
I like making ASM patches for the community, to enhance future hacks with features that can level up the Super metroid experience.
There's lots of possible things that can be done, and i have already made and released some patches with ideas i felt like could help future hacks.

However, i've hit somewhat of a dead end, and i don't have any immediate ideas for stuff i'd like to make.

That's where i need your help!
Drop your ASM idea here, and if i feel like it, i will do my best to turn it into reality (this means it's still entirely up to me whether i make it or not).

Make sure it's a reasonable/feasible feature.

some examples of good ideas:
-New regular enemy
-Hud display for a certain value
-Changing some behaviour of items
-a new item with a not-too crazy behaviour

Some examples of unreasonable/impossible ideas:
-New samus poses
-New samus movement type
-New fully-fledged boss
-adding an extra layer


I don't expect anything in return, bc i like writing ASM, but if you feel like giving me something, i could use a custom tileset or song.

FelixWright

How about AM2R-style visible muzzle flash when spin jumping with a charged beam?


Tundain

Alright, we're not quite there yet, but i believe it's possible


FelixWright

yooo let's gooo! what determines its position in SM, is it linked to arm cannon direction or is it hard coded?

Tundain

It's hard coded for every pose, a pose with value FF means no drawing, and other values means it draws at a certain offset, given by the index which that value then represents
What i did here is simply a hex tweak for those poses where i replaced FF with an index, having it spinning around will require some code tho

FelixWright

Ooo, interesting. Thank you for the info. :)

H A M


TobiMikami

Following bc I can always use good 2D mechanics to add to my engine. Kudos to you for everything though man for real, I wish my Game Maker scripts were more worthwhile to people, I can do way more with this and it took me years to get here, so I have no regrets going my path over ASM, but mad respect for those who work with that stuff.

Tundain

Alright, finished the spinning charge beam flare.
I've posted the resource in the metconst collaboration hunt thread.


TobiMikami

This might be a crazier idea, but would be really cool if even feasible:
FelixWright got me thinking MZM with the last one, it had the little trolly thing where Samus could hold it with her arm and fire, like that worm battle. I wonder if we could rewire the grapple beam, to be a bit like Prime, where the hand arm shot the grapple laser, freeing up the gun and allowing Samus to use her grapple beam as like Legend of Zelda's Hookshot, where you can hang and fire at enemies and then swing and re-grapple.

I remember reading Samus sprites could be stored in any place in the ROM, which was unique to her nothing else can do that I believe? Unless that's old info of course. But if I could find the "trolly sprites" with the non cannon arm up from MZM, I could probably do the sprite work for both the MZM and SM Samus, my engine uses the MZM sprites so and SM would be easier to scale up from. I don't know how much would be involved, but I figured it is a more "original" idea that could make some interesting new hacks and bosses. Also probably the closest we would get to power grip in SM.

Tundain

Hmm well there's multiple reasons why i'm not willing to try and make this.
Firstly, what this means is that samus can fire her beam while grappled, which already implies a few issues.
-Grapple beam replaces the beam palette while active, so firing a beam while grappled could mess up the palettes.
-Secondly, grapple beam is a beam in itself, like you have to hold fire in order to activate it, so you can't press fire to do smth else (Sure you could change grapple to use a different button for firing it, but i can't imagine anyone liking having to adapt to that + there isn't really a good button you can replace it with)
-Lastly this requires touching samus code related to her poses and movement, which i'm not thinking about touching anytime soon.

The only feasible way i think this could be done is by adding an extra state when grappled that locks you into being grappled (so you don't have to hold fire) and thus allows you to use the buttons to aim and fire. However i feel like this would be very janky and would require lots of changes to grapple-related code to allow it.

So unfortunately, i don't think i'm gonna try and make this.

TobiMikami

Good info, thanks for that! I figured it would be a bit of a farfetched idea, but now I have a bit more insight into the behind the scenes to say from a programming theory point of view what's more likely to be done than not. Thanks and keep up the good work!

neen

i do have an asm idea for an upcoming hack i am working on:

would require changing the behavior of kraid's platform belly button enemies to behave like the toenails: spin around, move diagonally and bounce off walls, etc. this seems pretty doable, i'm just not sure where to start.

TobiMikami

Quote from: neen on April 07, 2023, 12:50:08 AM
I'm just not sure where to start.
Start by learning/refreshing yourself on Trigonometry 101. Then, be prepared for disappointment because I'm not sure how possible it would be to ASM some of that into a game. I've literally been working with these exact functions all day ironically, but I'm using Game Maker Studio, where the sine, Cosine, tangent, and degree to radians/vice versa are all their own functions. If you're lucky I believe you'd be able to hijack say the fire flea AI, that uses a circular revolution, using y = y - r (radius of unit circle) * sine of angle theta, which may or may not have to be converted to radians, and x = x + r *Cosine of theta, that would produce a counter clockwise motion, inversely, x - and y + would create a clockwise motion, however, you'd have to increment angle theta +1 for every step all the way around. I had to use an array counter for that to even get it to work right, and that's with a game engine designed for producing new games. Trying to play with Trigonometry on SNES might be pretty heavy on the RAM too if it's even possible. Diagonal movement? Sure, you're just incrementing x and y at the same time, รท/- depends on the direction. When you start talking waves, circular motion, you're looking at using Trig. If you're seriously interested in making the attempt yourself I'd be happy to explain more of the knowledge I have as I was a trained electrician, and we have to use it a lot more than you'd think sometimes, but when explained properly, it's as simple as knowing the Pythagoran theorem, right triangle relations to a unit circle, and the (inverse) sine, Cosine, and tangent functions. As I stated though, the problem comes in implementing the math, I've never seen anyone not use a calculator or program with a sine/cosine/tangent function, I'm sure there's a formula but you'd be running a lot of math every step of the game.

Metroid3D

Quote from: neen on April 07, 2023, 12:50:08 AM
i do have an asm idea for an upcoming hack i am working on:

would require changing the behavior of kraid's platform belly button enemies to behave like the toenails: spin around, move diagonally and bounce off walls, etc. this seems pretty doable, i'm just not sure where to start.

If you don't have any prior experience with assembly programming there's some great resources on the wiki, like the ASM Basics Class. I'd hazard a guess that the cloning new enemies/technical information on enemies in Super Metroid sections probably have some useful stuff in them too.





TobiMikami

Hijacked the same AI and flagged as solid it looks like? Reminds me of a circus juggling Kraid parts but cool nonetheless.

Tundain

Well, if anything's for sure, it's that absolutely no trigonometry was needed in order to achieve this :)
No hijacks/flags were needed, simply changing the AI function the enemy sets for itself once it gets fired to the fingernail one.

HighTierHuman

I know this is an old thread but if you're still taking requests, would it be possible to create the Geron enemy from Fusion?


Tundain

#19
Wow okay I totally missed this, my bad.
If you're reading this, i propose two options:
-If you're somewhat familiar with ASM, you can check out this: https://github.com/amoebaOfDoom/subversion/blob/master/Project/ASM/Geron.asm
it's the code for the geron enemy, used in the romhack super metroid:subversion.
You can reuse it yourself but i suggest asking the author's for permission.
-If you're not familiar with how to do that, i can do it for you.

Sorry again for being late, but if you're reading this, lemme know what you prefer!