The Great Metroid Construction Collaboration Hunt - Post your resources here!

Started by Zhs2, July 20, 2009, 07:55:03 PM

Previous topic - Next topic

MetroidNerd#9001

Enemy Killed Event Trigger.asm triggers an event bit after killing all the enemies in a room. The number of enemies needed to trigger it is the same as the number of enemies needed to "clear" the room. The event bit set by the ASM is the same as the "Room Index" of the room you use the code in. Change the org location to wherever you have sufficient space in Bank $8F. Uses 16 bytes of free space. Use a room's Main ASM pointer to trigger this code.

Enemy Killed Screen Shake and Event Trigger.asm triggers a screen shake and an event bit after killing all the enemies in a room. The number of enemies needed to trigger it is the same as the number of enemies needed to "clear" the room. The event bit set by the ASM is the same as the "Room Index" of the room you use the code in. Change the org location to wherever you have sufficient space in Bank $8F. Uses 44 bytes of free space. Use a room's Main ASM pointer to trigger this code.

Moehr

ASM patch that allows you to trigger endgame event.

Once patched, add main ASM of FF00 to the room you'd like to trigger the escape sequence event in.

After a brief delay, a message will appear instructing the player to return to the ship. The next time they enter the ship, it will leave the planet and the credits will roll.

MetroidNerd#9001

This is a fully fixed version of the Speedkeep hex tweak originally found by DSO and Rakki.
Caauyjdp made ASM to fix it a while back, and Nodever2 compiled it all into one .asm file.
I originally posted it to the main site, so I'm putting it here so I can update my submission on the main site.

mfreak

Advanced arm cannon palette changes samus's arm cannon palette depending on beam combination.
In addition this patch also adds a beam glow effect on samus when shooting a beam projectile while charge beam is equipped.

There are 2 patch variants: BASIC and OPTIONS.
BASIC just changes arm cannon palette based on beams equipped.
OPTIONS has the same changes as BASIC and also adds the possibility to change the arm cannon
(and beam palettes) with palette presets. It adds 2 new options in the special settings:
- "Cannon Color Setting": moves you to a seperate menu where you can change the cannon color with presets.
- "Apply Color To Beam": applies an unique beam palette to all beam variations based on the cannon palette.

This patch uses freespace $85D000 until the end of bank $85 by default and some in bank $9B for arm cannon palettes.
If you use the OPTIONS patch it also uses freespace in bank $90 for beam palettes, which can be put anywhere in the ROM, too.

More information in the included README.


Mettyk25jigsaw

Hi Everybody.

I have made an asm file to share that is the same item in Metroid Dread. (Metroid Dread is awesome!!! btw)

It is the item that allows you to gain an energy tank once you have 4 energy parts collected.

It has an unlimited amount of sets, meaning you can have 4 energy parts to 1 energy tank, 8 energy parts to 2 energy tanks etc (updating energy tanks per 4 energy parts). It is still limited to 14 energy tanks in total though.

Note: For each set (1 set = 4 Energy parts) of Energy parts you place in your game, you must place one less individual energy tank in your hack as you still cannot go over 1499 points of energy.

EDIT: This item replaces reserve tanks, so you will not have reserve tanks should you use this. Almost forgot to mention that. I have used the reserve tank grid in equipment screen too. It keeps the percentage of energy parts currently collected.

Enjoy!!!

EDIT: I found a bug in my patch, so I am uploading a new version. It will be fine to patch over previous one as long as you have an increased free space usage located from (pc) 17810 TO 17833 to new usage between 17810 TO 1784A

EDIT2: I just fixed an issue where energy parts still give you extra life after running out of energy tanks hence updating the percentage back to 000% when you have already collected an energy part...I'm pretty much certain now everything is working fine as it should...

Oi27

Attached ASM to start the escape timer when a specific gray door starts flashing. Room main ASM.

Mettyk25jigsaw

I'm just letting people know that I found some bugs in my recently released EnergyPartitem.asm...You can redownload new version from the same post which is directly above this one.

I forgot to test the item before having any items equipped and having collected an energy part first before any other equipment items have been found...

mfreak

Map Overhaul
This is a patch which adds and changes a lot of stuff in the map system of Super Metroid.

Following features are:
   - changed minimap routine, it doesn't use graphics from the already loaded HUD tiles anymore.
     Instead it constructs the tiles and transfers it into the HUD graphics if needed.
     This allows for more maptile variations without being restricted to the HUD graphics.
   - all 8 palettes can be use for maptiles in the pause screen.
   - maptiles can have different tiles as coverup if this area hasn't been explored yet.
   - palettes in the pause screen are not restricted to "explored" and "unexplored" types.
     Every palette can have a designated "unexplored palette" bound to it. For example: unexplored palette variant of pal 2 (normal) can be 0 (yellow)
   - items can change maptiles. Very useful to remove dots which indicates items, if the item is collected.
   - adds a maptile glow effect. You can control which palette should have a transitional color effect.
   - adds a switch map function into the pause screen. By pressing select in the pause screen you can load the map of a different area you have visited.

New additions for version 1.2:
   - Smooth mapscreen controls. You can control the screen in all 8 directions in the map section of the pause menu.
   - Pause index and cursor get saved when unpausing.
   - More minimap palette options. You can set minimap maptile palettes depending on initial maptile palette of the map.
   - Vertical area maps. You can control which areas should have a 32x64 area field instead of the vanilla 64x32.
   - Map decorations. You can fancy up the pause screen map with non-maptile graphics to create more appealing maps.
   - Doors in the pause screen map can visualized with map icons. When opening these doors they also disappear in the map as well.

Below are images from areas of an included example patch which shows what is possible with this patch.
More info in the included README.
Special thanks to Tundain for finding out some flaws and giving me some suggestions!

Changelogs:[spoiler]
Changelog for v1.2.1:
   - fixed a bug where the HUD graphics in kraid's room will not fully reload when unpausing after kraid's death (found by "ouichegeante")
   - fixed a bug in optional "NoHexMap" to reload explored bits after death (found by "ouichegeante")
   - fixed a bug where the pause label index wasn't changed properly when loading map from the mapstation (found by "Tundain")
   - fixed a bug where the mapscreen would crash when pressing up/down together (found by "Tundain")

Changelog for v1.2.2:
   - add feature: "Adjacent Maptile Revealed", some maptiles can also uncover other tiles adjacent to it (suggestion by "Tundain")

Changelog for v1.2.3:
   - changed "Itembit Tilechange List" to use macros for better visualisation (suggestion by "Tundain")
   - changed "adjacent maptile table" config to make it less confusing
   - changed BASE and SMART patch version to XKAS and ASAR version
   - updated example patch
   - fixed a bug where minimap doesn't update when leaving fake ridley room

Changelog for v1.2.4:
   - new feature: "Doorbit Spriteicons", colored doors can be visualized and deleted when opening now (suggestion by "Nodever2")
   - hex graph graphics are included in the "BasicGraphicPatch"
   - updated example patch
   - fixed crash when entering main boss rooms

Changelog for v1.2.5:
   - fixed some bugs with the ASAR patch version, where the minimap is blank constantly and map screen scroll boundaries are set wrong (found by "Tundain")

Changelog for v1.2.6:
   - map in pause screen doesn't screenwrap (seeing other side of map when scrolling over confined area) (suggestion by "Tundain")

Changelog for v1.2.7:
   - new feature: "Hex Map Select Switch" (optional), when pressing select it will transition to the hex map view instead to choose which area to display (ASAR exclusive) (suggestion by "Tundain")
   - doorbit spritelock data structure changed. Door sprites will be check by an amount of entries listed per area. (suggestion by "Tundain")
   - fixed a bug where the pause screen index doesn't update back to map when activating a map station (found by "Tundain")
   - area maps correctly displayed as vertical areas in file select map screen now (found by "Tundain")
[/spoiler]




Noxus

Which gray door does it start on when it flashes? Or, what value do you set the gray door to?

TNTinthesky

This is every door animation in vanilla SM

Oi27

You set the room main ASM to $8FFEA0 (or whatever freespace you repoint it to) and the gray door should be in the PLM Index specified with
!DoorIndex = #$0000   ;PLM index of door to trigger escape

If you're using SMART, that means it should be the first PLM at the top of the list. For SMILE, you can see the index by mousing over the door.
Then, set the gray door to whatever vanilla conditions it would use; enemies dead, boss dead, etc.
Whenever the gray door begins to flash, the escape timer will also start.

If PLM index $#0000 can't be the door for some reason, then you can change it to any other index like #$0001, #$0002... #$000F, etc.

TNTinthesky

THIS WAS FOUND BY THE STAFF FOR PROJECT BASE
All door values are at the default speed/delay

dewhi100

Item Event PLM: When you enter a room with this PLM in it, the PLM sets a given event flag if you have a given item or beam. More instructions are in the file itself.

Random Room States: Instead of checking whether an event flag is set, randomly load the state at a 1-in-X rate, where X can be up to FF. A value of 1 will always trigger the state, a value of two will trigger the state half the time, and so on. I don't know what happens if you tell it zero, but I can say nothing will be broken.

nodever2

SM: Full Door Cap PLM Rewrite

I got sick of hex editing frame delays for door caps one at a time every time I wanted to change them. What started as a simple project to make things slightly easier to edit turned into a complete rewrite of the SM door caps with the objective of this being the defacto way for people to edit door caps in this game from now on.

I won't go into too many details of how this patch works, you can read the ASM for that if you are interested. In short, this patch dedupes many door PLM instruction lists, reducing them to the following counts:

  • Yellow, Red, and Green doors combined use a total of 2 instruction lists (compared to vanilla 12)
  • Blue doors use a total of 2 sets of instruction lists (compared to vanilla 4)
  • Grey doors use a total of 2 instruction lists (compared to vanilla 4)
  • Eye doors have also been rewritten to work better within the same space
Further, the above four categories of instruction lists are each generated by 1 macro, meaning that if you want to change how both orientations (horizontal and vertical) of grey doors work for example, you only need to edit 1 macro which will generate both orientations of the instruction list for you. The instruction list macros are also much more symbolic and human readable, using defines and labels heavily.

You may be wondering what I did with all the extra space in $84 that this patch made. Well, I certainly left a good chunk of it for you (see the console when you assemble the patch, it will tell you about new freespace regions), but I also spent a lot of time improving door functionality and adding several routines to make things work. These doors do not work identically to vanilla, they work better; I created a new draw instruction for doors which among other things (including building draw instructions at runtime) allows you to change the tile type of the door on a per-instruction basis, meaning that it is now easy to make doors passable by Samus as soon as you shoot them! This patch by default implements this. This is one of my favorite QoL features I have implemented in a very long time, and it means that the speed of the door animation is only cosmetic and doesn't affect gameplay.

For all the usual door property edits that are possible to make in vanilla, I have a comprehensive list of defines for you to edit in the "DEFINES" section near the top of the ASM file.
Customization options that are trivial to edit by changing defines:

  • All door animation speeds (separate speeds for opening/closing/flashing of each door color)
  • HP of each door (NEW! Grey doors can now take more than 1 hit to open if desired, + super missiles can do a customizable amount of damage to red and eye doors instead of always opening them)
  • Any door SFX values, including open/close/hit sounds
  • NEW! Blue doors and grey doors can be toggled to open when hit from Power Bombs or not. They are now required to act the same way instead of only grey doors opening to them in vanilla.
Other QoL improvements this patch makes to doors:

  • All door closing animations can be interrupted by shooting them if the door is unlocked and they are shot with the correct weapon, instead of ignoring your shot until it is fully closed like in vanilla.
  • The eye door flashing death animation can be interrupted by shooting it, which will cause the blue door to immediately open.
  • Several inconsistencies with vanilla doors have been patched out, including some animating at different speeds than others (powerbomb doors facing left would animate faster than all the other directions in vanilla for example, same with grey doors. this is no longer the case); and in vanilla only red doors have a hit sound effect, while in this patch all door colors with HP greater than 1 do.
  • Some jank looking animations for eye doors have been touched up. They behave nearly the same as vanilla otherwise though.
  • JAM's fix for vertical door rendering when you exit an elevator has been added to this patch for all doors.


I hope you all enjoy :) please contact me if you have any trouble. I would really appreciate it if you give credit if you use this. Thanks a million to PJ for his logs and other documentation, and JAM for the elevator door rendering glitch fix.

[spoiler=Version History]
June 07, 2022 (v1.00): Initial release.
June 10, 2022 (v1.01): Fixed eye door HP, was 07, is now 03 like vanilla.
[/spoiler]

[spoiler=Easy edits you may want to make to this patch]
[spoiler=* How to make colored and grey doors show blue while opening and closing (to free up CRE TTB space, only needing the opening anim of blue doors)]
line numbers as of patch version 1.01. change:

closing anim:
on lines 557-559 (colored doors) and 658-660 (unlocked grey doors) and 667-669 (locked grey doors) and 1183-1185 (bomb torizo door, thanks MetroidNerd9001):

dw InstDrawDoor<O> : db !Door(CLR/GRY)<O>Frame1Offset, ...
dw InstDrawDoor<O> : db !Door(CLR/GRY/BLU)<O>Frame2Offset, ...
dw InstDrawDoor<O> : db !Door(CLR/GRY)<O>Frame3Offset, ...

to

dw InstDrawBLUDoor<O> : db !DoorBLU<O>Frame1Offset, ...
dw InstDrawBLUDoor<O> : db !DoorBLU<O>Frame2Offset, ...
dw InstDrawBLUDoor<O> : db !DoorBLU<O>Frame3Offset, ...


opening anim:
on lines 579-581 (colored doors) and 691-693 (grey doors) (note: bomb torizo door shares opening anim with grey door so no need to make another change for it):

dw InstDrawDoor<O> : db !Door(CLR/GRY)<O>Frame3Offset, !TTairbyte|!OpenSpeedIndex
dw InstDrawDoor<O> : db !Door(CLR/GRY)<O>Frame2Offset, !TTairbyte|!OpenSpeedIndex
dw InstDrawDoor<O> : db !Door(CLR/GRY)<O>Frame1Offset, !TTairbyte|!OpenSpeedIndex

to

dw InstDrawBLUDoor<O> : db !DoorBLU<O>Frame3Offset, !TTairbyte|!OpenSpeedIndex
dw InstDrawBLUDoor<O> : db !DoorBLU<O>Frame2Offset, !TTairbyte|!OpenSpeedIndex
dw InstDrawBLUDoor<O> : db !DoorBLU<O>Frame1Offset, !TTairbyte|!OpenSpeedIndex


and you're done, then you can use colored door animation frames tiles in TTB for other stuff
[/spoiler]
[spoiler=* How to remove doors being nonsolid when opening (you better have a good reason for this if you want to do it)]
line numbers as of patch version 1.01.
change "!TTairbyte" to "!TTsolidbyte" in all door opening animations (except the no cap door frame); lines 579-581 (colored doors), lines 691-693 (grey doors), 763-765 (blue doors)
[/spoiler]
[spoiler=* How to remove eye door death animation being interruptible]
line numbers as of patch version 1.01.
on line 913, change "dw !InstSetPre, !GotoLinkIfShotGRY" to "dw !InstClearPre"
[/spoiler]
[spoiler=* How to fix eye door crash]
PJ's fix for the eye door crash is totally compatible with this patch, as that crash has to do with an error in the eye door projectile code which this does not touch. You can find that patch as well as more details about that glitch here (I would recommend you use this patch, thanks again to PJ):

https://metroidconstruction.com/resource.php?id=492
[/spoiler]
[/spoiler]


mfreak

BeamPatch is a visual altering patch with some beam designs made by me.
Mainly it changes some of the "draw projectile sprite" and the "construct beam trail" routines to optimize and expand things in there.
A lot of changes in bank $93 (mainly beam instruction and sprite changes) and $9B (just beam trail section) will be made.
This patch also contains JAM's SpazerPlasmaMix (altered) as an option.

Options in the main patch file are included to change various things mention below, as this patch doesn't do any obvious changes on its own.
Current options are:

+ Making visual changes to beams.
Current visual options are: vanilla, altered, simple, minimal, bulky and curved, as seen in the gif below.
There also are visual movement pattern options with their hitboxes adjusted:
- default: beam pattern as vanilla as possible
- smooth: same as default, but with smoother beam pattern
- shifted: outer projectiles of spazer are slightly behind center projectile
- wobble: wave beam does small sine wave patterns instead of big ones
- zigzag: wave beam does triangle wave patterns instead

+ Option to combine spazer and plasma beam together

+ Various beam trail options:
- control which beam combo display what beam trail
- more beam trail variants
- changing beam trail animation delay
- changing beam trail spawn/start delay

Changelogs:[spoiler]
--- Changelog v1.2.1 ---
- fixed a crash when super missile projectile explodes under certain conditions (found by "Lakifume", fix by "InsaneFirebat")
- fixed a bug where you cannot shot super missiles anymore if 4 of them don't spawn an collision explosion (for example colliding with enemies)

--- Changelog v1.2 ---
- new patch: "Beam Vulnerabiliy Priority", a seperate patch which changes the enemy vulnerability system of beams
- design option for every individual beam type
- some appearences of certain beam types have been altered
- new beam design added: curved
- optimization of beam trail code
- added one new beam trail type: blink
- added animation delay option for beam trails

--- Changelog v1.1.1 ---
- ASAR compatible
- some minor changes

--- Changelog v1.1 ---
- added changes to projectile block collision in bank $94
- new patch: "Improved Projectile Block Collision", a seperate patch which only changes the projectile block collision
- some code changes
[/spoiler]


mfreak

This patch replaces reserve tanks with another concept related to energy.
Expansion Tanks increase the capacity of every energy tank by 25 health (configurable) so that every energy tank can hold 25 more energy than before.
This is stackable up to 4 times for a total of 200 energy per tank. The current capacity additon will be indicated as a partly filled tank with a "+" symbol
located where the "auto" reserve icon was. This patch also removes anything reserve tank related, too.

Some small freespace in bank 80 and 84 are required, but free up a lot of space in bank 82.

mfreak

It overhauls the vanilla code of HDMA power bomb explosion. Notible changes are:
- Power bomb explosions should cause less lag than usual
- An option for afterglow effect to be moveable
- An option for customizable crystal flash "explosion", which is more of an attempt to repair the broken crystal flash code in the game.
- Cleans up the entire structure of "HDMA power bomb explosion" and the indirect power bomb table in bank $89.
- Requires no freespace! Instead it creates a lot of freespace duo to this cleanup.

ASAR required!

Mettyk25jigsaw

Hi everybody.

I've accomplished making Stay open/closed gates and have also made the gates so they are 100% impossible to lockout Samus on the wrong side of gate and gate cannot possibly retract by Samus being inside the empty gate tiles that were initially closing on her by making the gate be solid throughout the whole motion of gate closing/opening and by making an open gate be uncloseable while inside the empty gate tiles. I have also made a visual effect on the gates since all tiles will be solid while gate is in motion either up or down that creates a blocking effect and in turn makes it feel that the gate isn't meant to be passable while gate is going up or down.

If you are wanting to use this asm patch, keep in mind that you will need to use the SupermapV1.1 Patch by JAM and will also need to use the CRE free up patch by myself.

The gates are not just any weapon, missile, super missile and power bomb gates either, there are these six additional gates as well:

Bomb gates
Charge Beam gates
Ice beam gates
wave beam gates
spazer beam gates
plasma beam gates

Here is a video of the gates in action below to demonstrate the gates for you.

EDIT:
          The pink gate in video shows Samus being able to open the gate from other side of gate to switch and the blue gate in the other room shows Samus unable to open gate on other side to switch. All gates will be like the blue gates except this pink gate in video, this is because the pink gate is the wave beam gate and one is able to shoot through blocks with the wave beam so I have made it that you are able to open a gate on opposite side of gate to switch for wave beam gates for this purpose.

https://youtu.be/WMObv-jYw0s

Enjoy!

mfreak

Original idea by mccad00

Hammerball is an ability which allows Samus to charge down at high speed. To perform it press down while airbone and in morphball state.
A windup animation (like shinespark) will play where Samus levitates upwards before charging down.
Hammerball also can defeat enemies and destroy speedbooster blocks if speedbooster is equipped (configurable).
Some values are labeled and can be changed in the ASM file. Freespace at bank $90 is required.

Tundain

Gate locking system plm's!

This resource adds the gate system like in hyper metroid/ exertion.
Just place a switch plm in one room, and the gate plm in the other, and shooting the switch permanently unlocks the gate.
There are 2 versions: one with where the switch displays a msg box, and one where it doesn't.
the msg box version can optionally display a number (to tell the player how many gates are left).

More instructions in the files themselves

Credits to Smiley for the original code and oi27 for helping me with a sfx problem
Now you don't have to rely on the golden four anymore!
Update: condensed both PLM's into 1 patch, now you can choose for each plm individually whether it displays a msgbox or not, and whether it affects the total gate count of the hack

Enjoy! (and credit please)


Ob

DK barrels, but SM.

Can adjust x/y speeds independently. Speedboost on by default, easy enough to comment out. At least 2 barrels full of jank in there. Code and comment quality varies.

rar contains .asm, .gfx, .tpl, and .xml for use with SMART.

I highly recommend using speedkeep and respin with this enemy.

some known jank

  • Samus doesn't always load smoothy
  • Samus cannot enter the cannon with iframes
  • Samus doesn't move perfectly in sync with a moving cannon
  • Samus' max fall speed had to be increased, or a cannon arc turned into a line very quickly.
  • Samus loses all upward momentum if you release the fire button (jump by default)
  • Item selection is very messed up while in a cannon
  • Unpausing in a cannon starts the spinjump sfx
  • Speedboosting sfx do not play
  • Shooting a cannon straight down can surpass the fall speed cap.
  • Shooting a cannon straight down close to the ground may cause Samus bounce instead of breaking blocks.
  • Grapple beam



Tundain

Two-digit missiles  HUD

this simple patch makes missiles use a 2-digit counter on the hud, in case your hack has less than 100 missiles.
You will need to make the necessary adjustments to your hud gfx, and to the missile msg box.

don't forget to credit!

Tundain

Universal ammo system!!

This patch adds the universal ammo system like in hyper metroid

You can customize how much ammo supers and pbs give you when picking up the item, and how much they will consume when firing them
You can edit a tile from the hud gfx to have a symbol in between the current ammo counter and the maximum ammo counter

More info in the file itself
*Update: new version which also takes SBA's and crystal flash into account, these being customizable
*Update2:
-optimized some stuff
-added a second optional version which also features an ammo tank PLM, just like in super metroid subversion

Enjoy! (and credit ofc)


Tundain

Unique room names

This patch will allow you to give every room in your hack a unique name displayed on top of the HUD, just like in super metroid ascent
You probably want your ROM to have an extra bank added to it, as with a lot of rooms, it can take up a lot of space
You will have to redraw your hud icons, as the top part is now cut off to make space for the name, and you will also have to change the message boxes accordingly

more info in the file itself
*Update:
- optimized the way letters are loaded so it takes up a lot less space than before
- changed the way you can write the room names in the file, it's now 10x easier!

*Update2:
-Optimized the way the game draws the names, now you can add a parameter in front of every name to tell how long it is, this way you can save even more space
if you have a lot of short names in your hack (instead of filling it with a bunch of space characters)
don't forget to credit!