Morphing Ball fix Status: bugfix Effect: harmless Bank: 84 Description: In original ROM, if you put in game hidden Morphing Ball or Morphing Ball in the ball, they'll give you Spring Ball instead. Now Morphing Ball is always Morphing Ball ---------- Stronger yellow doors Status: improvement Effect: harmless Bank: 84 Description: Now yellow doors have extra protection from blast. 1 Power Bomb is not enough. Quantity of Power Bombs to open yellow doors is depends on distance from epicentre of every blast. You can change the values by yourself. Open patch file in hex and change all 30's to whatever you want add reapply the patch. ---------- Yellow gate fix Status: bugfix Effect: harmless Bank: 84 Description: If you ever tried to add yellow gates to your hack, then you shall notice that they looking like grey gates. This patch will color yellow gates to yellow color instead of grey one. ---------- "Room cleaned" events Status: improvement Effect: harmless Bank: 8F Description: 9 new events. This patch is for educational purpose to understand the code. I recommend to use in your hacks patch FF events located below. After cleaning out room, selected event will happen. In original ROM, after destroing all Metroids, that room will load state where is no Metroids in this room. You can do more than just rid of enemies after cleaning room. You can place an elite space pirate in Wrecked Ship. After killing him, in very far room in Lower Norfair locked doors will open. Single event can affect many, many rooms. If there is no enemies in room with this PLM, then event will be set instantly and effect will happens when you leave this room first time. Events used: 10..13 (old ones used by Metroid shafts and halls), 17..1F. PLM to set events: DB44 Place PLM DB44 in the room. Use lower byte to choose event. ---------- New item events Status: improvement Effect: SMILE will not recignize new events Bank: 8F Description: 00 will set event #17 02 will set event #18 04 will set event #19 06 will set event #1A 08 will set event #1B 0A will set event #1C 0C will set event #1D 0D will set event #1E 10 will set event #1F 12 will set event #10 14 will set event #11 16 will set event #12 18 will set event #13 To take effect, add alternative state to the room (or rooms) where you want to. New item-related events. Now you can change your room after obtaining ANY item. This patch is for educational purpose to understand the code. I recommend to use in your hacks version 2 located below. How to use it: 1. Apply the patch. 2. Add extra state to your room (or use existed state) 3. Open your room in SMILE. 4. Choose Edit > State Properties 5. Select E640 -- Morphing ball 6. Redesign your alternative variant of the room. 7. Open your ROM in hex. 8. Go to your room address. 9. Search for "E640" value. It will be stored backwards in ROM. I mean, "40 E6" A. Change "E640" value to any value located below. For example, if you want to select Charge Beam state, replace "40 E6" with "00 FF" FEE6 Missiles FEF5 Super Missiles FF04 Charge Beam FF16 Ice Beam FF28 Wave Beam FF3A Spazer FF4C Plasma Beam FF5E Grappling Beam FF70 X-Ray Scope FF82 Bombs FF94 Hi-Jump Boots FFA6 Varia Suit FFB8 Gravity Suit FFCA Spring Ball FFDC Space Jump FFEE Screw attack If you want to do some changes after changing value, then read steps from B to D B. Open your ROM in hex. C. Go to your room address. D. Change the new value back to E640. Now you can do desired changes. To set new event again, repeat the steps from 7 to A. WARNING! SMILE will not recognize new events but the game will. WARNING! This patch may overwrite some of your rooms if your bank $8F is almost full. Data writes from 7FEE6 to 7FFFF. If there are FF's in your ROM before patching, it's alright. This patch also changes 2 bytes for the first alternate state of landing site room. Change it to any value provided above. ---------- New item events v2 Status: improvement Effect: SMILE will not recognize new events Bank: 8F Description: Now you can change your room after obtaining ANY item or after collecting needed amount of ammo or energy. You can add an extra state that will not let player enter Mother Brain's room if he got less than 300 energy. Or, if you create a long hell's run, you can let player enter if has enough energy to complete run to prevent him from sure death. Or, you can unlock "safety rooms" where player can restore his health if he has extremly low energy. As for ammo, you can prevent player to enter the room he can not escape without certain ammo. For example, if there'll be a room that allow you to exit only when you clean this room with enemies vulnarable only by Super Missiles and there willn't be Super Missile refill in the room, then you can prevent a player from entering this room if he hasn't enough Super Missiles to get out. You can ever add a hidden item into the room if player has already got some items or collected some amount of ammo or energy or don't let player go forward until he got some ammo. Of course, you can change weather effects with quanity events to make it rains from time to time, for example. Changes since v1: Code is hardly optimized. Amount-related events added. Combined item events added. How to use: 1. Apply the patch. 2. Add extra state to your room (or use existed state) 3. Open your room in SMILE. 4. Choose Edit > State Properties 5. Select E640 -- Morphing ball 6. Redesign your alternative variant of the room. 7. Open your ROM in hex. 8. Go to your room address. 9. Search for "E640" value. It will be stored backwards in ROM. I mean, "40 E6" A. Change "E640" value to any value located below. For example, if you want to change room after getting first Missile pack, then replace "40 E6" with "00 FF" Collected items FF00 Missiles (any) FF10 Super Missiles (any) FF90 Charge Beam FF98 Ice Beam FFA0 Wave Beam FFA8 Spazer FFB0 Plasma Beam FFB8 Grappling Beam FFC0 X-Ray Scope FFC8 Bombs FFD0 Hi-Jump Boots FFD8 Varia Suit FFE0 Gravity Suit FFE8 Spring Ball FFF0 Space Jump FFF8 Screw Attack Quantity events FF05 Max Reserve Energy + Max Energy => 399 FF15 Reserve Energy + Energy => 399 FF20 Max Missiles => 25 FF28 Max Super Missiles => 10 FF30 Max Power Bombs => 10 FF38 Max Energy => 300 FF40 Max Reserve Energy => 100 FF48 Missiles => 25 FF50 Super Missiles => 10 FF58 Power Bombs => 10 FF60 Energy => 300 FF68 Reserve Energy => 100 Combinated events FF73 Power Bombs & Super Missiles & Missiles & Charge Beam FF78 Super Missiles & Missiles & Charge Beam FF7D Missiles & Charge Beam WARNING! SMILE will not recognize new events. If you want to do some changes after changing value, then read steps from B to D B. Open your ROM in hex. C. Go to your room address. D. Change the new value back to E640. Now you can do desired changes. To set new event again, repeat the steps from 7 to A. As for quantity of ammo or energy needed to change state, you can change it by desired value. For example, if you need more or less current energy to change the room then read steps from E to 11. E. Search for needed ammo in the list (FF40). F. Open your ROM in hex. 10. Jump to the very end of bank $8F. (7FF40 in our case). 11. Change the word (2 bytes) after byte "C9" to set any value you want. If you have already applied v1, read this: Since the code is optimized, values for items are little changed in v2. To make states determined in v1 work in v2, read this table and change values in first column to values in second column for rooms where you have add extra states. For example, to make room with Missile state work in version 2, open ROM in hex, jump to header of mdb of your room and change EEF6 to FF00. Event v1 v2 Missiles FEE6 FF00 Super Missiles FEF5 FF10 Charge Beam FF04 FF90 Ice Beam FF16 FF98 Wave Beam FF28 FFA0 Spazer FF3A FFA8 Plasma Beam FF4C FFB0 Grappling Beam FF5E FFB8 X-Ray Scope FF70 FFC0 Bombs FF82 FFC8 Hi-Jump Boots FF94 FFD0 Varia Suit FFA6 FFD8 Gravity Suit FFB8 FFE0 Spring Ball FFCA FFE8 Space Jump FFDC FFF0 Screw Attack FFEE FFF8 WARNING! SMILE will not recognize new events but the game will. WARNING! This patch may overwrite some of your rooms if your bank $8F is almost full. Data writes from 7FEE6 to 7FFFF. If there are FF's in your ROM before patching, it's alright. ---------- Vertical door fix Status: bugfix Effect: Harmless to original ROM, but may overwrite custom PLMs. Can't edit "Hits to open" property in SMILE for modified doors Bank: 84 Description: Another bug in Super Metroid is taking place. After going up through elevator, pink and green vertical doors are looking like blue ones. Now they are have the correct colors. Door data is 4 bytes bigger now. So I have to expand one door and move other door of the same type to a free space. Free space is now at $242A6..$24300 and $2442B..$24489 Door data is moved to $272E0..$273A8 Look in hex to data at $272E0. If there are FF's, don't afraid to apply the patch. WARNING! Don't edit "Hits to Open" property in SMILE for green and pink vertical doors after applying patch. If you see B4 in that field, then don't touch it. You can do it manually in Hex Editor, if you want to. Modifying "Hits to open": To edit "Hits to open" property for green door going up change byte at 24272 To edit "Hits to open" property for green door going down change byte at 2730F To edit "Hits to open" property for pink door going up change byte at 243F4 To edit "Hits to open" property for pink door going down change byte at 27372 ---------- Ridley defeating state Status: improvement Effect: Harmless unless you added some code in bank A6 Bank: A6 Description: A small patch that will set event #16 if you win in Ceres battle (if Ridley drops larva). You can open some doors from very beginning as reward, alter weather when you land, remove some enemies or everything else you want. Just select event #16 as alternative state in rooms where you want to change something, if player wins at Ceres. Another usage is to punish player in future if he loses. For example, add Metroids in original state of landing site, change doors from pink to green in some rooms, add lava or acid in some rooms etc. ---------- Metroid 1 items/doors Status: improvement Effect: May overwrite custom PLMs Bank: 84 Description: 1. Orange doors for Tourian (left one and right one). They are opens after 10 missile hits. 2. Large missile pack as reward for beating Kraid and Ridley. It gives you 75 missiles at once! 3. Invisible save points. Normal save points are not affected. New one must be placed exactly under elevator enemy. 4. Graphic and text files for new doors, missile pack and invisible save points. Place them in "smile/files/Plms" folder to be able to choose them in SMILE. Any usual doors and PLMs will be not affected. You can, for example, set quantity of missiles for usual missile pack to 2, for missile pack in ball -- to 5 and 10 for hidden missile pack and this new missile pack will still gives you 75 missiles. You can modify this quantity too. Old yellow door will still opens from power bomb. Pink and green doors are unchanged too. Invisible save points must be placed exaclty under elevator enemy because the lowest line of new point is acting like a door to be able to use elevator. WARNING! This patch will write data between 26FD3 and 2728F. If you wrote custom PLM in this interval, then this patch will overwrite your data. Use it wisely. I recommend to look to this space in hex editor. If there are FF's, it ok to use it. ---------- Messenger Status: improvement Effect: May overwrite custom PLMs Bank: 84 and 85 Description: This PLM can display any message you want when you touch it. Extract graphic and text files in PLM folder to "smile/files/plm" folder to be able to choose them in SMILE. Apply IPS file to the ROM. Place PLM F2C3 to the room. When you touch it, the message will be displayed. Set ID of message with low byte. To add new messages, use message patch by Kej. First new ID is 1D. To display message when you just enter the room, use continuation PLM (red arrows) to expand area where messanger can be touched. Look to scroll PLMs in original ROM to understand how it works. Place this PLM only to empty 16*16 tile of Layer 1, or this PLM will overwrite graphic under tile to empty air block. This PLM is made from Ice Beam PLM. 2 instructions were removed and another one -- shortened. I've also changed time how long messanges starting from ID 1D will be displayed to 30 frames (0.5 seconds in NTSC version or 0.6 seconds in PAL version). To change this value, open your ROM in hex and go to 2FFF9. 001E (30) is default, 003C (60) = 1 second in NTSC version, 000C (12) = 0.2 seconds in NTSC version. If you've already expanded message array to use messages for new items, then you may want to change message number of ID, starting from which display time will be changed. To do so, open your patched ROM in hex, goto 2FFF1 and change this byte (single byte only!). WARNING! This patch will write data from 27290 to 272C6 and from 2FFF0 to 2FFFB. If you wrote custom PLM in this interval, then this patch will overwrite your data. Use it wisely. I recommend to look to this space in hex editor. If there are FF's, it ok to use it. ---------- FF events and tubes Status: improvement Effect: harmless Bank: 84 Description: FF events to use. After cleaning out room, selected event will happen. In original ROM, after destroing all Metroids, that room will load state where is no Metroids in this room. You can do more than just rid of enemies after cleaning room. You can place an elite space pirate in Wrecked Ship. After killing him, in very far room in Lower Norfair locked doors will open. Single event can affect many, many rooms. If there is no enemies in room with this PLM, then event will be set instantly and effect will happens when you leave this room first time. This patch also allows you to use multiple Maridia tubes. Environment in room with tube must be water or air. PLM to set events after cleaning the room: DB44 Extract graphic and text files in PLM folder to "smile/files/plm" folder to be able to choose them in SMILE. Event PLM Place PLM DB44 in the room. Use lower byte to choose event. Event = Low Byte. Maridia tube Create a room with tube. Place PLM D70C in the room to the upper-left corner of tube. Use lower byte to choose event. Event = Low Byte. Don't forget to place "breaking glass" enemy in the room. If you have questions, just open the room CEFB in original ROM and look how it works. To take effect, add alternative state to the room (or rooms) where you want to. There are another events programmed but not displayed in SMILE. With this you can alter rooms depending of boss state in any area. 40 Main boss of Crateria is defeated (if you place one) 41 Mini-boss of Crateria is defeated (if you place one) 42 Torizo of Crateria is defeated (Silver Torizo) 48 Main boss of Brinstar is defeated (Kraid) 49 Mini-boss of Brinstar is defeated (Spore Spawn) 4A Torizo of Brinstar is defeated (if you place one) 50 Main boss of Norfair is defeated (Ridley) 51 Mini-boss of Norfair is defeated (Crocomiro) 52 Torizo of Norfair is defeated (Golden Torizo) 58 Main boss of Wrecked Ship is defeated (Phantoon) 59 Mini-boss of Wrecked Ship is defeated (if you place one) 5A Torizo of Wrecked Ship is defeated (if you place one) 60 Main boss of Maridia is defeated (Draygon) 61 Mini-boss of Maridia is defeated (Botwoon) 62 Torizo of Maridia is defeated (if you place one) 68 Main boss of Tourian is defeated (Mother Brain?) 69 Mini-boss of Tourian is defeated (if you place one) 6A Torizo of Tourian is defeated (if you place one) 70 Main boss of Ceres is defeated (Ridley) * 71 Mini-boss of Ceres is defeated (if you place one) 72 Torizo of Ceres is defeated (if you place one) 78 Main boss of Debug is defeated (if you place one) 79 Mini-boss of Debug is defeated (if you place one) 7A Torizo of Debug is defeated (if you place one) * even if you lose in battle, this event will be set when he fly away. Of course, if you not supposed to place main boss in Crateria (for example), then you may use event 40 freely as any other event This patch will overwrite unused parts of code for maridian tubes and code itself for event PLM to make it shorter, so it technically, 2 patches in one. I've done so because both of them are using the same part of code (that will set event depending on Low Byte) Warning! Don't forget to remove all DB44 PLMs from any room of original game except of Metroid rooms to prevent setting events by accident. Look at the rooms of escape sequence in Crateria and Tourian rooms