(Link to AcmlmWiki) Offline: thank ||bass
Register | Login
Views: 13,040,846
Main | Memberlist | Active users | Calendar | Chat | Online users
Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album
07-01-24 05:17 PM
0 users currently in ROM Hacking.
Acmlm's Board - I3 Archive - ROM Hacking - A Super Metroid ASM question New poll | |
Add to favorites | Next newer thread | Next older thread
User Post
pikaguy900

Sparky


 





Since: 08-10-06

Last post: 6355 days
Last view: 6342 days
Posted on 10-02-06 05:06 PM Link | Quote
I'm planning a Super Metroid hack, and I have a plan to make what I call "Warp Holes" (not to be confused with the ones in The Legend of Zelda: Link's Awakening). I want them to connect all the areas in my hack except maybe Tourian and the Wrecked Ship. I'm not sure if I want those areas linked or not. I want them to work like so:

When you find a Warp Hole, you can enter it to warp to another location. However, the first one you find leads back to the same room you found the Warp Hole in. (Of course, the Warp Hole is just a big hole in the ground, and the room has a hole in the ceiling for exiting the hole.) I want to use ASM to set a special flag, which I will call the "Warp Hole Flag", upon falling down the warp hole. What would happen is this:
Steps:
1: When you enter the warp hole, it checks to see if the warp hole flag is activated. (The flag is independant of all the other flags, so activating one only activates that single flag, and not any other flag, like "Kraid Defeated", "Statues Activated", etc.) If the flag is set, it goes to Step 2. If not, it goes to Step 3.
2: The ASM checks for the status of the Warp Hole flag next in the list of the current area you're in. If the flag for the next area in the list is set, you'll go there. If not, it'll skip the areas until the ASM finds an area that does have the Flag set and you warp there. Let's say the warp hole would send you in this order:
Crateria-Brinstar-Norfair-Wrecked Ship-Maridia-Tourian
...and you're in Brinstar. If the Warp Hole Flag for all of the areas is set, you'll go to Norfair's Warp Hole Room. However, let's say that the following flags are set (a "*" means the Flag hasn't been activated):
Crateria-Brinstar-*-*-Maridia-*
...and you're in Maridia. You'll go to Crateria's Warp Hole Room instead of Tourian's, because you haven't entered Tourian's Warp Hole (I will refer to entering a Warp Hole as "activating", and I call a Warp Hole that you've entered in as "activated", so a warp hole you've netered is an activated warp hole) yet. Get the idea?
3: Since the flag isn't set for the warp hole you just activated, the ASM sets the flag for the area you're in. Afterwards, the ASM jumps to Step 2. If the Warp Hole you just activated is the only active one, you won't go to a "Step 4". Step 2 would pass over all the area flags until it reaches the area flag of the area of the warp hole you just activated, thus making you reappear at the top of the room.

It's complicated, but hey, so is my mind. Even if it's impossible to do the aforementioned idea in ASM, I still have a basic idea for it- Make one area link to another normally, then use Green Gates to prevent the player from going to areas before they should. So, a little help? I barely know ASM (all those terms confuse me, and the Hex Editor I have doesn't use such terms), but I'm willing to learn if I must (and if no one can make this). (Also, any suggestions/comments will be appreciated, but hopefully they won't be posted here, as they'd be off-topic in this thread.)
Gideon Zhi

Keese








Since: 12-05-05
From: ...behind you! Boo!

Last post: 6345 days
Last view: 6342 days
Posted on 10-02-06 06:45 PM Link | Quote
Conceptually, something like this is fairly easy to code. You're basically describing a teleport room styled after Symphony of the Night; the assembly for your flag-checking is really very simple. Triggering it in the game, and teleporting the player to the desired room, is a completely different matter altogether.

I'm not a Super Metroid hacker, so I don't know how doors, room/palette/tileset swaps, and items/objects/savepoints work, but what I'd generally recommend is using the save platform as a template, linking it up with the door routines if possible when the player activates it, and doing the simple flag check then.
pikaguy900

Sparky


 





Since: 08-10-06

Last post: 6355 days
Last view: 6342 days
Posted on 10-02-06 06:51 PM Link | Quote
Originally posted by Gideon Zhi
Conceptually, something like this is fairly easy to code. You're basically describing a teleport room styled after Symphony of the Night; the assembly for your flag-checking is really very simple. Triggering it in the game, and teleporting the player to the desired room, is a completely different matter altogether.

I'm not a Super Metroid hacker, so I don't know how doors, room/palette/tileset swaps, and items/objects/savepoints work, but what I'd generally recommend is using the save platform as a template, linking it up with the door routines if possible when the player activates it, and doing the simple flag check then.

...Okay. I could possibly figure out how to trigger it myself, but what I really want is what values I should use to achieve the desired effect. Right now, I'm having a hard time understanding how certain hex values tell a game what to do. I mean, each value can be used over and over again, but I don't see how they actually carry the information of what you want them to do. I mean, all they are are numbers and letters. They themselves don't have any special info imbedded into them, like how to jump at the press of a button, right? ...Do they?

Edit: Oh yeah, what do you mean by the "teleportation room" style in Symphony of the Night? I've never played that game before.


(edited by pikaguy900 on 10-02-06 05:52 PM)
Kejardon

Shyguy








Since: 05-21-06

Last post: 6343 days
Last view: 6342 days
Posted on 10-02-06 09:24 PM Link | Quote
Certain bits in certain locations do in fact have special meaning to them. For example, you can always look up what buttons Player 1 is pressing in $004218 / $004219, and writing to $002104 is used to tell the SNES what sprite tiles go where.
Anyways, if you want to do that, you're really going to need to know a good bit of assembly. Especially since Super Metroid's room transitions don't work in a way that's useful for this - you'd need to code a workaround the engine, or change your idea to work with the engine. Making one-way gates or something similar would be far easier.

::edit:: The save platform edit Gideon Zhi would probably be pretty feasible, knowing how save stations work. You could get away with simple door data for each room, some PLM instructions (a very common 'programming' format in Super Metroid, sort of like macros), and a small bit of assembly.

::edit again:: Then again, instead of using the normal door blocks, you could probably use edited scroll PLMs (trigger on touch) to make the hole work like you suggested. It would probably be a bit simpler than the save platform, too.

I'll gladly explain the Super Metroid specific parts of it, but you'll have to learn assembly and actually code most of it. I have too much on my plate to do things other people can do without my help.


(edited by Kejardon on 10-02-06 08:34 PM)
(edited by Kejardon on 10-02-06 08:39 PM)
pikaguy900

Sparky


 





Since: 08-10-06

Last post: 6355 days
Last view: 6342 days
Posted on 10-02-06 09:38 PM Link | Quote
Originally posted by Kejardon
Certain bits in certain locations do in fact have special meaning to them. For example, you can always look up what buttons Player 1 is pressing in $004218 / $004219, and writing to $002104 is used to tell the SNES what sprite tiles go where.
Anyways, if you want to do that, you're really going to need to know a good bit of assembly. Especially since Super Metroid's room transitions don't work in a way that's useful for this - you'd need to code a workaround the engine, or change your idea to work with the engine. Making one-way gates or something similar would be far easier.

::edit:: The save platform edit Gideon Zhi would probably be pretty feasible, knowing how save stations work. You could get away with simple door data for each room, some PLM instructions (a very common 'programming' format in Super Metroid, sort of like macros), and a small bit of assembly.

I'll gladly explain the Super Metroid specific parts of it, but you'll have to learn assembly and actually code most of it. I have too much on my plate to do things other people can do without my help.

Fine by me. Besides, what have I got to lose? I have a backup plan in case the main plan doesn't work. And I usually don't... (I thought ahead this time. )
Add to favorites | Next newer thread | Next older thread
Acmlm's Board - I3 Archive - ROM Hacking - A Super Metroid ASM question |


ABII

Acmlmboard 1.92.999, 9/17/2006
©2000-2006 Acmlm, Emuz, Blades, Xkeeper

Page rendered in 0.012 seconds; used 377.77 kB (max 451.19 kB)