Quick Intro text patch I figured this was something a lot of people would probably want so I made the code as unobtrusive as feasible. It should work on just about any hack, and if it doesn't work on yours you're probably smart enough to figure out what's wrong. All this does is make the intro text speed up if you're holding a button. It also speeds up fade-out from the movies - this was necessary actually to avoid some rather nasty glitches. The patch is for unheadered, unsurprisingly. Source code written for xkas is also attached if you want it. There's still 2 minor graphical quirks with the patch. One is that the SR388 scene may be slightly misaligned, and another is that the palettes might only finish transitioning 31/32nds of the way so they're a tiiiiiny shade off of 'finished' (just about unnoticable). I decided they're minor enough and I'm not going to fix them. ---------- Elbow fix Fixes the graphics when Samus is walljumping while facing left. Samus's elbow was not connected to her arm previously. It actually looks like Samus's graphics got redesigned sometime but they forgot to adjust that one tile, as it doesn't fit into the pattern the rest make. Compatibility: Harmless (Modifies Samus's graphics) ---------- Aim anything Allows the aim buttons to be assigned to any button. Compatibility: Harmless (Modifies button assignment code) Download for unheadered ROM ---------- Disappearing blocks Disappearing and Reappearing blocks ala Megaman games. See the included asm file for details. Contains .ips, .asm, and .gif for SMILE. Compatibility: Uses free space in bank 84 (PLM coding) ---------- KejMap 2.0 Smart KejMap. This is a one-time patch-and-forget to handle all auto-map tile saving and loading. This version is slower than the older version of KejMap though - if that works fine for you I recommend sticking to the older one. Compatibility: Harmless to savestates, sram maps will be garbled (Overwrites map Save/Loading) ---------- Reflec fix Reflec Bomb Crash fix. Reflecs do not attempt to flip projectiles stored in bomb RAM now. Bombs seem to disappear (similar to invulnerable enemies) if they hit a Reflec now. Compatibility: Harmless (Modifies Reflec code) ---------- Falling damage Falling Damage patch. It does just what it sounds like, see the assembly file for more details about it. Compatibility: Harmless (Modifies landing code and jumping variables) ---------- Decompression optimization It follows the original compression scheme, it's just smarter and faster (In other words, as long as there are no bugs I missed there is no reason NOT to use this patch). 3 trials showed the following improvements in decompression times (measured in frames): 43 to 28, 29 to 19, and 5 to 3. I can't think of any more ways to speed it up further, so this is it I think. Compatibility: Harmless? (Modifies decompression code, involves questionable hardware quirk) ---------- Super Missile fix v1.2 A super missile counts as two projectiles. When the graphic projectile dies, it deletes all super missiles. ALL. So, if you have two super missiles on screen, the moment either one dies, the other one dies as well (give or take a frame). This is really stupid, especially considering that the routine to delete the multiple super missiles is less efficient than using the graphic projectile's link to the super missile. So I made use of just that. This code (should) allow you to fire multiple super missiles without worrying about them being deleted when they shouldn't be. Also, this fix exists entirely within original code; no extra space is used, so unless you tweaked this specific code, it should run fine on any hack. UPDATE: There was another glitch popping up because the second projectile was not correctly deleted. I fixed that. There is no more second projectile. Super Missiles are now *one* projectile instead of two. Code was also revamped for use in xkas and commented. UPDATE: Glitch found by Crashtour99 is fixed. ---------- No music I had a bit of free time and decided to figure out how exactly to disable music. It took me 5 tries to guess the correct byte to change. Change CF8413 (278413 in an unheadered ROM) from CD to 6F. Effectively it's putting in an RET (equivalent to RTS) here in the SPC code: Code: 180b: cd 00 mov x,#$00 ;Start of common processing for one tic of music ---------- Aim anything fix Found a bug in the AimAnyButton patch. >_> Updated ASM attached - it should work for both an unpatched rom and a rom with the bugged AimAnyButton patch. ---------- Spinjump restart ---------- Message Box v1 A patch to add new message boxes. Based on an item in Insanity, stripped of spoily stuff and commented for public use. It's xkas code only, you'll have to read it and edit it yourself, and you may need a few of my documents to figure out what to put in for some details. This version supports only small message boxes. Compatibility: Uses free space in bank 85 ---------- PLM Disassembly I started a pretty crazy project a week ago for some reason. And then I actually finished it. Yes, a project I am calling crazy. It's a bit advanced, most people probably won't have any use for it but... the first line of the file sums it up: ;Let's start a silly over-ambitious project of disassembling the entirety of bank 84! Compiling this results in no changes in an unedited ROM - it's a useful reference and base for writing more PLMs as every available PLM instruction is documented (just search for " Instruction "), or for editing PLMs to do different things instead. Optimizing it for more room may be a fair bit of work; the IDs of the PLMs will change and you'd have to rename all the files in SMILE's directory, but I've got a macro set up to print every ID change if you uncomment it. As for why this is crazy and not merely informative... it still works