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

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

Previous topic - Next topic

OmegaDragnet9

Tonight I restored all the latest revisions of my attachments to this thread. What I contributed is back where it should be.

It would be great if my fellow metconsters would follow suit.

Much can be salvaged before February of  2024 (on the Wayback Machine) but there was an explosion of contributions from this year that I'd rather not lose to the sands of time.

OmegaDragnet9

Metroids Stay Dead
Speed 1 Version

(Was trying to figure out how to do this for a while, and seeing what Mystii was doing with the Zebetites made me check how the vanilla game used the Speed 1. So credits to Mystii, Scyzer and P.JBoy for helping me figure this out.)

If an event matching the metroid's Speed 1 is set, the metroid will not respawn when you reenter a room. (This is Parameter 1 in SMART.)

The exception is for Event 00. Why? Because every gray door sets Event 00, and would result in no unedited metroids spawning if a gray door were unlocked at any point before you entered the room.

This gives you the option to have returning metroids, if you so desired.

This is best used with JAM, dewhi100, or my own room-clearing event PLMs.

It might be some time before this gets added to resources, mainly to make sure there aren't any bugs I missed.

Assembles in xkas and asar.

Tundain

Torpedo enemy

This one is featured in V E R T I C A L I T Y.

Intended for usage with the SMART editor.

More info in the ASM file.


OmegaDragnet9

Transparency Line Fix

P.JBoy's edit of Black Falcon's Transparency Line fix that was featured in the Super Metroid Mod Manual.

Credits to Black Falcon, P.JBoy, and Neen (for explaining the changes.)

Another set of edits I added that should be discussed:

-Commented out the transparency fix for acid (there is a better fix that affords palette tweaks, not featured here.)

-Added another row of water tiles from elsewhere in the tilemap. This is completely necessary because I encountered an issue where a transparent row of air tiles replaced the top row of water. What would happen is Samus would splash in and out of air, and the water physics were still active in that row of air. This corrects that problem.

(I know before the Metconst purge I thought I saw a similar fix floating around.)

OmegaDragnet9

Shared with permission from Meowmaritus:

Acid Fix

Meowmaritus was kind enough to share a fix for the transparency line and the background for the acid imposing on the air above the acid.

Similar to squishy_ichigo's Acid Mod, this allows the acid to be set to any palette blend instead of just using the Power Bomb door colors.

Why is this to be used instead of the original acid mod?

The original acid mod allowed the acid palettes to be chosen much the same way as lava in the FX editor. However, the lava palette blend was only setup to handle two colors, as introducing a third color would result in the background being tinted that very color. (The effect is actually very ZM looking and does look cool with lava.)

The problem with acid is you could either just have the whole room filled with the acid background, or you were forced to have the acid rely on two colors. The former was too overpowering and the latter was too weak looking, and  the result was inferior to simply leaving the original door color intact.

Code entirely by Meowmaritus. The only thing I provided is the palette blend table (courtesy of P.JBoy) as well as the legend for the custom palette blends. (Palette blends taken from my current project.)

Image and video links for reference:



https://imgur.com/UN8n7Bj
https://i.imgur.com/E5uZBEp.mp4
https://i.imgur.com/exEkKSN.mp4

Not shown in the videos, but the vanilla acid colors are provided in the palette blend table.

Use blend 82 in the FX editor for vanilla acid.
88 for a richer acid.
8E for a dark green acid.
94 for a dark blue acid.



OmegaDragnet9

I recommend people use Meowmaritus' acid fix, but I figured it would be worthwhile to provide my disassembly of squishy_ichigo's acid mod. (For documentation's sake.)

lorom

;Disassembly of squishy_ichigo's acid mod

org $8A8840

DW $180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F
DW $180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F,$180F

org $8A8880

DW $1850,$1851,$1852,$1850,$1851,$1852,$1850,$1851,$1852,$1850,$1851,$1852,$1850,$1851,$1852,$1850
DW $1851,$1852,$1850,$1851,$1852,$1850,$1851,$1852,$1850,$1851,$1852,$1850,$1851,$1852,$1850,$1851

org $8A88C0

DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853
DW $1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853,$1853


OmegaDragnet9

Not my code. This is a reupload of HAM's Beam Glows. (Reuploaded because of broken forum links.)

OmegaDragnet9

Enemy Deletion Prototype

Room ASM that deletes all enemies in real time if a particular event is set. (Event PLM not included.)

It does have a PLM; and it serves only to have a PLM argument and set that value to a specific RAM address. (If you have an Event PLM, make sure both PLMs have the same low byte.)

The Room ASM ($FCC0) reads that and determines which event to check against (using the value determined by PLM $FEC0. Make sure you place that PLM in the room editor.)

Known Issues:

1.) It is best to make sure enemies needed matches all the enemies in the room (or you will have a goofy jumpscare when they suddenly vanish.)

2.) I have fast door transitions and noticed that enemies appear in the room momentarily when the room is loaded.

3.) Enemies not set to process off-screen, even after the room is loaded, their graphics can be visible for about a frame when you walk into a new screen.


;This has some issues and requires a bit of setup.
;Might be worthwhile to save on roomstates.

lorom

;Event PLM not included. The PLM that is included only serves to provide a PLM argument
;by which the Room ASM can detect if a certain event has been triggered.
;Otherwise you'd be left with a hardcoded event OR be stuck with only the Room Index (which does work well enough.)

!A7Freespace = $A7FF8A

org $8FFCC0
;Room ASM

;LDA $079D ;Use this or the next line, but not both.
LDA $1C21
JSL $808233
BCC END
JSL BankA7

END:
RTS

org !A7Freespace 
BankA7:
JSR $A943    ;Sets Enemy Properties as dead
RTL

;So what I gather of thise routine in Bank $A7, the reason all the enemies seemingly vanish at once
;is because it is summoned by the Room ASM once a frame and appears to be running down a list of the enemy index.
;I don't believe it's actually deleting them all at one time.

;----------------------------------------------------


org $84FEC0
;This goes in the room. It's only purpose is to have a PLM argument and store that to a value in RAM
;The Room ASM takes that value in RAM, and determines the event to trigger the deletion of all the room's enemies.

DW Setup
DW InstList

Setup:

PHY
LDA $1DC7,y        ;PLM variable (event # to set)
AND #$00FF
STA $1C21
PLY
RTS

RTS

InstList:
DW $86B4

;KNOWN BUGS

;If you have a fast door transition you can see enemies for half a second.
;Additionally, if you do not set the enemies to process offscreen, the graphics will remain for about a frame where
;they would normally spawn in game.

OmegaDragnet9

Wider Message Boxes

Will be obsolete soon, and has absolutely been done before. Figured I'd share if anybody wanted to use it.

This copies and modifies the Vanilla Wide border code to span the width of the whole screen.

To have it work you have to punch in the last 4 digits of the freespace inside the Border Code in SMART's Message Box Editor.

You also need to copy the black tiles over to where the gray tiles currently are.

Credits to P.JBoy for the banklogs.

OmegaDragnet9

JAM $100 Extra Events Modified

Disassembled JAM's $100 Extra Events but found it didn't work in SMART.

Ended up rewriting it to make a version that did work in SMART, and this led to more custom Roomstates:

JAM's Extra Events ($100-$1FF)
Extra Extra Events ($200-$27F)
Items State ($00-$FF)
Items State ($100-$1FF)
Doors State ($00-$FF)
Doors State ($100-$1FF)

This allows for you to have roomstates spanning most of the usable array. Collecting any item or opening any door can be an event in and of itself.

Within each roomstate you only have access to the low byte in editor, but you select which high byte is represented by changing between the roomstates.

I have been testing this the last few days. So far everything appears to be working as intended.

However, I would definitely backup all related SMART project files before adding this.

Included in the ASM file are the needed  XML scripts that have to be placed inside the project XML file.

You will need to modify existing Event ASM to include part of the High Byte of the PLM argument when assigning an event to set. (Look for "AND $00FF" and make sure it's "AND $0FFF" in however many places that would apply.)

I am currently reworking certain resources I uploaded to reflect that change.

OmegaDragnet9

Updates to Event ASM

Modifactions that set events higher than $FF.

Two zip files here:

First is an update to my version of JAM's FF Events and Tubes. This allows you to use more of the word of the PLM argument to select events higher than $FF.

The second file is a PLM extremely similar to Benox50's Extended Event PLM. This version does not have the cool Indiana Jones style collect-another-item-and-set-an-event feature. But what it does is provides you the opportunity to use the last three nybbles of the PLM argument to select events higher than $FF. Credits to Benox50 and MetroidNerd#9001 (whose earthquake script I borrowed.)

Both PLMs are extremely derivative of previous work and the original authors and contributors are credited in the ASM files and readme files.

SMART XML files attached.

OmegaDragnet9

JAM's Messenger PLM Complete Disassembly and Updated Versions

I uploaded an incomplete disassembly about a year ago.

This one is complete and better commented.

The original PLM will throw an alarm in asar because of a JSR that should be a JSL. That is fixed in the two updated versions attached in the file.

Included is a version based off the structure of the Scroll PLM instead of the original Ice Beam clone. It's main benefit is it doesn't tie up an item slot and beams will not collide against it like they would an item PLM.

Freespace has been changed from the original PLM in the two updated versions.

Attached are SMART project files to make it more convenient to use in the editor.

OmegaDragnet9

Morph Speed

Based off the hex tweaks by Kejardon

Allows acceleration in morphball form regardless of whether or not Springball is equipped. Does use up some freespace in Bank $90.

So far initial tests look ok.

OmegaDragnet9

Morph Spread Modifications

This relies on some code PHOSPHOTiDYL shared on the forums (the exact place escapes memory at the moment.)

The code PHOSPHOTiDYL provided allows for the charge to be held in morph form indefinitely. The modifications allow for the charge button to be held instead of the down button (similar to Project Base.)

The morph spread only really releases at normal velocity though.

OmegaDragnet9

Missile Shotblock

ASM that turns Shotblock BTS $0C into a block that is destroyed by missiles and super missiles.

Uses CRE Tile $DF.

GFX to merge into your CRE included with directions.

Also a BTS icon for the SMART level editor for ease of use.

https://i.imgur.com/aE9RWCy.mp4