News:

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

Main Menu

[SM] A few questions before getting started

Started by hlw, December 31, 2018, 02:21:09 AM

Previous topic - Next topic

hlw

So, i was developping a metroid clone but that project failed once i started looking for art (some poeple tried to scam me, and some poeple actually achieved to scam me) so i gave up on that (dunno if it will be forever or not, but for now what i can tell about it is I don't really feel like talking about it more deeply).

I was wondering if i could make an SM hack that includes some of the ideas I had for my game, and wandering on this forum i found a big lot of hex tweaks and resources that filled me with hope. I never used ASM before nor really done lot of things around hexadecimal stuffs so i got lost sometimes. I'll first give a few things i want to do with my hack then i'll talk about the issues i have.


The hack i got in mind is meant to be finishable (maybe not 100% though) by someone even if he can't walljump even once, can't morph ball in air to get in a hole etc etc... A total beginner that never played metroid before could be able to finish the game (he'll die a bunch of times, but i can't count the number of times i died when i was 5 years old trying to finish the vanilla game).
It will be designed to have plenty of possible speedrun routes for both 100% and any% runs. There will only be one optimized low% route (0%) tho, which could cause some kind of problems as low% are also any%, even if only a god / TAS could acheive it.


The overall map is designed to work just like zelda breath of the wild does. You can go any direction at any time (you won't be able to reach the deepest parts of an area without collecting some required items tho) and even try to fight the final boss right from the start (and just as in BOTW, you'll have to kill every boss you didn't kill in their own den in a row before you reach the final one, so i guess it will require tool assistment). Most of the rooms that require an item that is in another area will have multiple way of getting past it, example : One high platform located in brinstar could be reached using grapple beam located in norfair, high jump boots located in the wrecked ship, or a shinespark, so poeple won't need to circle around the entire game 10 times to be able to reach the deepest part of one area. Lots of shortcuts will be integrated for those that can do well use of walljumps and other features.
Some items will be located at multiple areas at once, there will be one spazer in brinstar and another one in norfair, but once you find one, the other one is turned into plasma instead.
It will be a circular map, Crateria will have ways leading to every other area, and every area will have ways leading to other areas as well, i'll try to create a map that doesn't require poeple to backtrack much.
Bosses will be located in dungeons that will be around the center of each area (Dungeons will be easy to access early as you enter an area) but will be tough, as once inside there is no way to refill energy until you get past the entire thing and kill the boss. For those that can't get past them, the area around them will include PLMS that will be really helpful (grappling beam to kill draygoon), and as the map is kinda open world, you can also grab every possible plm of the entire game before starting to enter dungeons.

Here are my actual questions:
I actually don't need precise answers like the actual hex to change nor what code to write as i'm still currently learning the basics about asm, what i actually need is the general idea and or links to tutorials or resources about the stuff i'm asking, this forum is really big (which is a good thing) and as sometimes there are stuff that are inside big topics like the "Great metroid collaboration hunt" i get totally lost, I need to figure out what is too hard for me to do so i can end up with a list of everything i can include in my hack and start learning point by point everything i'll need to acheive it, but also start prototyping some rooms when i need to make a break from learning.

I plan to modify boss rooms (example : Adding KAMERS (would love to add a metroid but i did read somewhere it's impossible) in Ridley's room and changing the layout):
((1))  What are the limits when filling rooms with enemies ?(Actually, re-reading SMMM it is 32 and 4 different ones, can SM really handle 32 enemies at the same time?)
((2))  There never was another enemy in boss rooms in vanilla nor in the hacks i played before, is there some reason about that?
((3))  I saw that some bosses/normal enemies were in multiple parts, will it lower the number of possible enemies in a room?
((4))  Is there anything else i should worry about ?
((5))  I guess it must be easy, but can i change the damages Mother brain does with her rainbow beam to 98 energy points?
((6))  Any idea of why metroids have to be placed first in the list? Anything i could do to change that ? (Randomly guessing it's the fact that metroids need a certain song playing for them to have sound effects, could totally accept to have a metroid clone that doesn't make noise in that case)



I plan to make some areas event based as long as some other stuff :
(For the wrecked ship by example, i plan to make some "puzzles" where the player can turn on/off the electric stuff and also modify the water level)
((1))  In the SMMM there is a link to JAM's patch for the use of 640 events, the link is broken.
((2))  What are the different ways that can be used to trigger events ? How can these be expanded ?
((3))  Is it possible to "untrigger" an event ? Let's say i created an event that modifies one map triggered by shooting a switch, can i make that, by shooting again the same switch (or another) the modified map come back to it's normal state again?
((4))  If you had two switches in different maps, and one map that has to be modified only if both of the switches got shot, how would you do that?
((5))  If you had seven switches in different maps, and one map that has to be modified only if at least five of them got shot, how would you do that?
((6))  Is there some way to just modify the enemies / make some blocks appear/disappear that are inside a room based on an event without making a room state ?
((7))  What kind of thing should i do to lower/higher the water level of the room i'm actually in? (Just like the Chozo that flushes the lava toilet in lower norfair, but both ways, with water) (>> I guess when i'll be stronger i'll be able to figure it out by watching the actual room in the game, but having the
    general idea on how it works or even just the actual name of this kind of things could make me gain lot of time and give me ideas on the ways i could use that).
((8))  Is there a way to trigger an event when the player saves animals?

(Actually i'm really confused about events, the Super Metroid Mod Manual is very well explained with examples and stuffs, but it doesn't really cover that part. Saw JAM post somewhere where he showed there was quantity and combinated events but somehow i can't find it back)

I plan to completely change the way shinesparks work:
(As this might be hard, i need to figure out how hard this will be so i can decide right now if i give up on this or not, as the game map will end up being really different based on if this can be included in the hack or not)
The base idea is to completly get rid of the speed booster and create a power up that lets you shinespark instantly.
It would have a quantity like missiles/super missiles. (I have no need for Super bombs actually, so it could replace it).
Controls would also be different from the vanilla game, when in normal state ( samus grounded or in air jumping ) while shinespark selected, pressing the shoot button will instantly shinespark in the aimed direction. When samus is already shinesparking, pressing again the shoot button would change the direction based on the direction inputed by the controller (and use one more charge).
Would need to add more directions (down left and right, and down).
Would need to create custom BTS that would stop samus mid shinespark (just like when she is out of energy) but act like air when she's not shinesparking.
And of course to remove the lost health when shinesparking but i already found out how to do that.
Would make me able to add a lot more shortcuts making the player able to pick one item in brinstar, shinespark directly to maridia and pick one more item, then back to crateria in less than a minute.

((1))  How much complicated would this be to create ? (Was really easy to do when creating this behaviour in Unity but i somehow got the feeling that modding SM is another world)
((2))  Any clue on the kind of roadmap it would require ?
((3))  Is it too big for it to be asked in the trading center if i end up figuring out i'm too much of a newb to do it myself?
>>>  Should i plan this in my hack and create the rooms accordingly then figure out how to do it, or should i just give up on it and create my world map without thinking about it ?

Some random questions:

((1))  Is there any BTS out there that would act as solid for samus, but would let ennemies pass through?
((2))  Is there any hex tweak/custom door that would make pink/green missile doors stay pink once samus already opened these and comes back to the room?
((3))  Any way to make an ennemy that once killed explodes, and hurts samus as well as other ennemies in a certain range ? (Could use one charged beam value or something as i have no need for charge beam in this hack)
((4))  Any way to make a respawning ennemy take some time before respawning?
((5))  Heard something about fusoya snes9x/zsnes, what is it exactly? What kind of new possibility do one that uses it get ?



So, i got to say i've been reading all day long the board for 3 entire days now (i got a big lot of stuff saved as favourites leading to resources / hex tweaks already) but somehow i couldn't find the answers to those questions, even using the search feature (i guess as i don't really know the name of what i'm searching for nor the name of patches that already exists it makes it harder). I guess some stuffs are totally trivial but you know, i'm a newb.
I'm repeating myself but of course i'm not asking you to answer all of those questions precisely, if there is one place somewhere on the board that covers most of the stuff about what i have to know just lead me to it. I'm really sorry that my post is that long, but i'd actually rather annoy you once big time than coming back every two hours to annoy you just a bit.
Still, i hope i'm not annoying poeple too much. I'm not an english speaker but i tried my best. I'll be really happy if someone could help me, i'll obviously try to help other poeple in return when i'll be able to do so .

- See you next mission -

Smiley

Quote from: hlw on December 31, 2018, 02:21:09 AM
((1))  What are the limits when filling rooms with enemies ?(Actually, re-reading SMMM it is 32 and 4 different ones, can SM really handle 32 enemies at the same time?)
32 is the maximum you can place in a room, but they can't all be active without causing lag.

Quote
((2))  There never was another enemy in boss rooms in vanilla nor in the hacks i played before, is there some reason about that?
VRAM limitations (the game can't load that much graphics at once), lag, or just a design decision.

Quote
((3))  I saw that some bosses/normal enemies were in multiple parts, will it lower the number of possible enemies in a room?
Each part counts for the 32 maximum, yes.

Quote
((4))  Is there anything else i should worry about ?
The maximum loaded graphics for enemies is 0x2000 bytes total; that is the sum of all the enemies' GFX sizes. You *can* go over the limit, but that will overwrite parts of the tileset.

Quote
((6))  Any idea of why metroids have to be placed first in the list? Anything i could do to change that ? (Randomly guessing it's the fact that metroids need a certain song playing for them to have sound effects, could totally accept to have a metroid clone that doesn't make noise in that case)
Metroid graphics, specifically the green shell, assume metroids are the first enemy type in the room. Can't be changed without asm.

Quote
((2))  What are the different ways that can be used to trigger events ? How can these be expanded ?
I'll assume you already know how all the vanilla events are triggered. To trigger custom events, just some simple asm needs to be run. Specifically, LDA #$0xxx : JSL $8081FA, where xxx is the event you want to trigger. You can go all the way up to 27F, though checking for events higher than FF will require a custom roomstate check (if used with roomstates). When and where you run this code is entirely up to you.
Also worth noting is that boss events are just a subset of all events.

Quote
((3))  Is it possible to "untrigger" an event ? Let's say i created an event that modifies one map triggered by shooting a switch, can i make that, by shooting again the same switch (or another) the modified map come back to it's normal state again?
Yes. Do the same as above, but run JSL $808212 instead.

Quote
((4))  If you had two switches in different maps, and one map that has to be modified only if both of the switches got shot, how would you do that?
((5))  If you had seven switches in different maps, and one map that has to be modified only if at least five of them got shot, how would you do that?
Have each switch some event bit, then check those bits when you need to.

Quote
((6))  Is there some way to just modify the enemies / make some blocks appear/disappear that are inside a room based on an event without making a room state ?
Yes. You can make a PLM, or use room Main or Setup ASM, or make a custom enemy...

Quote
((7))  What kind of thing should i do to lower/higher the water level of the room i'm actually in? (Just like the Chozo that flushes the lava toilet in lower norfair, but both ways, with water) (>> I guess when i'll be stronger i'll be able to figure it out by watching the actual room in the game, but having the
    general idea on how it works or even just the actual name of this kind of things could make me gain lot of time and give me ideas on the ways i could use that).
Set the liquid destination height, speed and delay in ram.
7E:1978 - 7E:1979    FX3 height (average?) (measured from top of room down)
7E:197A - 7E:197B    FX3 height to go to
7E:197C - 7E:197D    FX3 height adjustment speed (signed)
7E:197E - 7E:197F    FX3 'C'. Bitflags: 0 = FX3 flows left, 1 = bg heat effect, 2 = 'line shift'? (Water does not affect Samus), 3 = unknown, 6 = Big FX3 tide, 7 = Small FX3 tide (priority over 6)
7E:1980 - 7E:1981    FX3, frames to wait till beginning movement. (0 means 10000)

You can also modify the height directly.

Quote
((8))  Is there a way to trigger an event when the player saves animals?
Yes, by running $8081FA.

Quote
[Shinespark babble]

((1))  How much complicated would this be to create ? (Was really easy to do when creating this behaviour in Unity but i somehow got the feeling that modding SM is another world)
((2))  Any clue on the kind of roadmap it would require ?
Not very hard, it's been done before.

Quote
((1))  Is there any BTS out there that would act as solid for samus, but would let ennemies pass through?
Not in vanilla, unless you count the breakable shaktool blocks. However, there is a patch that does exactly this.

Quote
((2))  Is there any hex tweak/custom door that would make pink/green missile doors stay pink once samus already opened these and comes back to the room?
If the room argument of a door cap (or an item) is >8000, it will respawn. Though for items, note that using x-ray in a room with a respawning item will crash the game.

Quote
((3))  Any way to make an ennemy that once killed explodes, and hurts samus as well as other ennemies in a certain range ? (Could use one charged beam value or something as i have no need for charge beam in this hack)
((4))  Any way to make a respawning ennemy take some time before respawning?
Custom ASM. You can do anything with custom ASM :)


I recommend joining the MetConst Discord server if you haven't already, you'll get help faster there.