News:

Don't forget to visit the main site! There's lots of helpful docs, patches, and more!

Main Menu

[SM] Mixing Spazer and Plasma [997‰ IS done]

Started by JAM, July 14, 2010, 04:43:04 PM

Previous topic - Next topic

JAM

#75
Quote from: person701 on June 13, 2014, 05:20:25 PM
Lets also not forget any enemies that reflect shots also cause crashes. Just felt I should reiterate that.
Ah... crap. Forgot about this. Making new projectiles will take from 4 to 6 months. Maybe more. So, it's better to rewrite the code that deleting the beam and spawning projectile. Since reflected beam have no damage, it'll be better just to reflect the beam without deleting it.

Also, no progress were made since last my message. So, I'll just upload what I did for now. Check the first post.

Keep in mind that vulnerability arrays are counts as $1A bytes now instead of $16, but arrays are not repointed. It means, no fucking questions like "Why enemy XXXX is immune to YYY beam", please. To set correct vulnerabilities for each enemy, the whole vulnerability data in bank $B4 should be modified. For every enemy, every vulnerability array should be repointed and expanded by 4 bytes. Yeah. Will do that in 0.996.

How it works
Missile's, Super Missiles', Power Bombs' and Bombs vulnerabilities are now placed at slots $16..19 which is currently matches slots $0..3 for the next enemy. That's why it'll need repoint. 4 slots in SMILE, starting from "Missile" one are now used for Spazer/Plasma mixes.

Steel Sparkle

I have encountered a problem with this hack.. I have reached mother brain with 100% of the items and no matter what i do she will not die and go into her second stage of the fight..She just sits there and takes all the abuse i can throw at her and doesn't die.May someone please help me?

JAM

Quote from: JAM on June 30, 2014, 03:59:11 PM
Keep in mind that vulnerability arrays are counts as $1A bytes now instead of $16, but arrays are not repointed. It means, no fucking questions like "Why enemy XXXX is immune to YYY beam", please. To set correct vulnerabilities for each enemy, the whole vulnerability data in bank $B4 should be modified. For every enemy, every vulnerability array should be repointed and expanded by 4 bytes. Yeah. Will do that in 0.996.

RealRed

Hey JAM, if it would help with the project, I'd gladly make a patch that repoints/redistributes all of the enemy vulnerabilities.

RealRed

#79


Am I doin it rite?
EDIT: Please make this less painful, JAM-- I'm even a faithful user of SMILE JX..! :(

JAM

#80
Bloodsonic
Only wow... This is a perversion... And you're already doing it wrong. Wave/Ice/Plasma should be right after Ice/Plasma. Missiles and Super Missiles -- after Wave/Ice/Spazer/Plasma (NEW ROM) or after Wave/Ice/Plasma (OLD ROM). Missiles are Super Missiles in JX were just RELOCATED to the bottom of the window. So the order of values in SMILE JX (with Spazer + Plasma patch being installed) is:
00 0B
01 0C
02 0D
03 0E
04 0F
05 10
06 11
07 12
08 13
09 14
0A 15
16 18
17 19

And Spazer + Plasma values are now from 0C to 0F.

Less painful method is hex editing. Example:

OLD ROM:
1A6C1C:
02 02 02 02
02 02 02 02
02 02 02 02
02 02 02 02
02 02 02 02
02 02

NEW ROM:
1A6C1C:
02 02 02 02
02 02 02 02
02 02 02 02
02 02 02 02
02 02 02 02
02 02 02 02
02 02

Purple is insertion you need to do. Best values to add are copy of line 3 (above insertion). Next enemy:

OLD ROM:
1A6C32:
00 00 00 00
01 01 01 01
02 02 02 02
02 02 02 02
02 02 02 02
02 02

NEW ROM:
1A6C36 (1A6C36+4):
00 00 00 00
01 01 01 01
02 02 02 02
02 02 02 02 ;Copy of line above.
02 02 02 02
02 02 02 02
02 02

Next enemy.
OLD ROM:
1A6C48:
...

NEW ROM:
1A6C50 (1A6C48+8):
...

I'd do that myself, but still have no time and powers for that (you just have no idea how many hours I spent doing this (shifting in hex) when making this patch. Hint: over 500).
And be warned of data at 1A71F4. Shouldn't be overwrited.
Free space at 1A74B8 should be used instead.

Although, I can make a program that will do this automatically. Will take about hour or so.
Prorably, it'll be a feature of 2.84 that will allow to append my patch to the ROM with already changed vulnerabilies.

RealRed

#81
Oh, shit.
It's a good thing I only have in about 4 vulnerabilities done. Also a good thing I posted!
I was already typing things in using SMILE, and then typing 4 more bytes at the end using a hex editor.
Anyway, this'll be a lot easier because I can edit vulnerabilities as they are in SMILE, and then insert 4 more bytes after the first 12.

Thanks for catching that, I was gonna be pissed if I made every single vulnerability wrong.

EDIT: What's at 1A71F4, anyway? I cleared all of $B4's enemies allowed, enemy names, vulnerabilities, and drop chances already... only the code between 0x1A1809 - 0x1A5C8B was spared.

EDIT 2: A new obnoxious little bug.

There's a strange artifact that will appear if you fire your beams diagonally downward or upward off the screen. of moves towards samus as if your beam "looped" the screen and kept going for a short distance.
Only occurs with S+P combos.

JAM

Quote from: Bloodsonic on December 17, 2014, 09:01:16 PM
Thanks for catching that, I was gonna be pissed if I made every single vulnerability wrong.
You're welcome! Yeah, I was in right time in right place.

Quote from: Bloodsonic on December 17, 2014, 09:01:16 PM
EDIT: What's at 1A71F4, anyway? I cleared all of $B4's enemies allowed, enemy names, vulnerabilities, and drop chances already... only the code between 0x1A1809 - 0x1A5C8B was spared.
I don't sure, but I guess, the game wouldn't be happy if this stuff will be overwrited. Also, thanks for your job.

Quote from: Bloodsonic on December 17, 2014, 09:01:16 PM
EDIT 2: A new obnoxious little bug.

There's a strange artifact that will appear if you fire your beams diagonally downward or upward off the screen. of moves towards samus as if your beam "looped" the screen and kept going for a short distance.
Only occurs with S+P combos.
Aha, you're the first who have detected my little cheat. Since the double and triple plasma beams are using the same code of tilemap (for the 2 of 3 beams), I actually made them using the same tilemap. So, Spazer and Plasma beams are using their unique code for the middle beam, and then the common code shared with Plasma and Wave beam.

"Bridge" between these 2 tilemaps are causing this bug. This "bridge" part consists of Wave + Plasma beam tilemap size, which is transformed to tile number, if it was loaded as a tilemap part of Spazer + Plasma shot. All I could do is move this glitched tile as far I could, so I already moved it to X = 0100, Y = 0080. So, it only appears if shoot like you did.

Yes, not a perfect solution. Why I did this? Because there is not enough space to fit both Wave + Plasma and Spazer + Wave + Plasma beams in bank $93. That's why developers haven't did this. 

Of course, I already found solution: split tilemaps and sprite code to 2 different banks, but... it will took several mounts. As well as any other thing I have to do to make this patch working perfectly. So, to go from 0.996 to 1.000 I'll need 2 years if work on this patch at least 1 hour per day.

RealRed

#83
So, I was making the vulnerabilities in smile, opening a hex editor, and inserting four bytes for S+P, W+S+P, I+S+P, I+W+S+P after twelve bytes, but I ran into an issue.



According to your instructions, the missile vulnerability would've been at the byte circled with blue.
However, Bomb Torizo (the user of this vulnerability) was completely invulnerable to missiles until I changed the byte circled with red...

So I admit, I didn't examine your post too thoroughly, I see now that you have missiles at 16, supers at 17, so actually, I should treat missiles/supers/bomb/powerbomb as the four new beams and add 4 new bytes to the end for those four weapons.

You know though, JAM, I don't fully understand why you did this. If you made the four new beams use 16-19, old vulnerabilities would work normally both with/without the patch and no insertion/moving necessary, just additions. (Meaning old smile vulnerability windows would be accurate in terms of what you're editting... Also, if you haven't applied the spazer+plasma patch yet, you could still test bosses and enemies normally. I occasionally patch on a copy for testing but for my main rom I work on, but haven't put it in yet since I'm holding out for any updates.)

Well, it makes more sense to me, but I'm guessing you coded it that way for a reason?

EDIT:
Quote from: JAM on December 20, 2014, 01:42:42 AM
Aha, you're the first who have detected my little cheat. Since the double and triple plasma beams are using the same code of tilemap (for the 2 of 3 beams), I actually made them using the same tilemap. So, Spazer and Plasma beams are using their unique code for the middle beam, and then the common code shared with Plasma and Wave beam.

"Bridge" between these 2 tilemaps are causing this bug. This "bridge" part consists of Wave + Plasma beam tilemap size, which is transformed to tile number, if it was loaded as a tilemap part of Spazer + Plasma shot. All I could do is move this glitched tile as far I could, so I already moved it to X = 0100, Y = 0080. So, it only appears if shoot like you did.
Hey Jam, this is actually really great:
You can hide this effect very easily if you're careful with your level design.
As long as your background DOESN'T utilize transparent colors (0). Also, FX1 A of 08 -- Seemingly Normal seems to place the junk in front of the background instead of behind it (so just don't use it). I'm running around testing this right now, and will report anything else I find.
Alright, so the biggest perpetrators are Draygon, Kraid, Crocomire, Phantoon, and maridia waterfall rooms.

JAM

Quote from: Bloodsonic on December 21, 2014, 08:57:21 PM
So, I was making the vulnerabilities in smile, opening a hex editor, and inserting four bytes for S+P, W+S+P, I+S+P, I+W+S+P after twelve bytes, but I ran into an issue.



According to your instructions, the missile vulnerability would've been at the byte circled with blue.
However, Bomb Torizo (the user of this vulnerability) was completely invulnerable to missiles until I changed the byte circled with red...

So I admit, I didn't examine your post too thoroughly, I see now that you have missiles at 16, supers at 17, so actually, I should treat missiles/supers/bomb/powerbomb as the four new beams and add 4 new bytes to the end for those four weapons.
Oops. I'm sorry. I forgot how exactly I did this. It was long time ago.

That's the right order:
00 01 02 03
04 05 06 07
08 09 0A 0B
0C 0D 0E 0F
10 11 12 13
14 15

1. 0C-0F should be moved to 16-19.
2. Copy of 08-0B should be placed to 0C-0F.

Like this:
00 01 02 03
04 05 06 07
08 09 0A 0B
08 09 0A 0B
10 11 12 13
14 15 0C 0D
0E 0F

So, I was wrong earlier, I'm sorry.


Quote from: Bloodsonic on December 21, 2014, 08:57:21 PM
Well, it makes more sense to me, but I'm guessing you coded it that way for a reason?
I've moved Missiles, Super Missiles, Power Bombs and Bombs because that's all I could do. New beams MUST use values 0C-0F (unless I shall perform a special coding for them. Hell, I don't even know a place in the ROM where I should do that). And I haven't found what to do, to actually shift the data (place Missile after I+W+S+P). It's just working like I did and it's good. The vulnerabilities code was hidden very well, and I have found only few values, but this is enough to make the patch works eventually.



Quote from: Bloodsonic on December 21, 2014, 08:57:21 PM
Hey Jam, this is actually really great:
You can hide this effect very easily if you're careful with your level design.
As long as your background DOESN'T utilize transparent colors (0). Also, FX1 A of 08 -- Seemingly Normal seems to place the junk in front of the background instead of behind it (so just don't use it). I'm running around testing this right now, and will report anything else I find.
Alright, so the biggest perpetrators are Draygon, Kraid, Crocomire, Phantoon, and maridia waterfall rooms.
In Draygon's room this single tile is appearing. Yes. When I saw it at first time I was thinking that I must to start over, then I calculated the free space size and realized that I couldn't place the whole code in one bank, even if code everything. You just can understand how was I feeling. Evenutally, I'll split the data to different bank. Someday. Now the goal is v0.996. More or less stable version.

Thank you for your solution and your help! As for Draygon's room, have you tried some perversions like in Sigma++? Maybe that'll help.

Jiffy

On the topic of bugs, the game Hardlocks when you shoot an invulnerable Ninja Pirate (when the beam bounces off) with any Spazlma combo. :^_^:

personitis

That has been noted at least three times already...

Kitsune_Phoenix

#87
*deleted post*

personitis

Since the code for having both Spazer and Plasma now points to actual valid and running code, no, the glitches will not work.

RealRed

Quote from: Kitsune_Phoenix on December 26, 2014, 05:07:24 PM
I am not sure if anybody already asked this, but do the Reset and Murder Beam glitches still work with this patch? I haven't tried yet.
... Of course not. All spazer+plasma combinations from before are replaced with stable actual beams that don't crash the game. how would they still work..?

Quote from: Jefe962 on December 26, 2014, 07:32:21 AM
On the topic of bugs, the game Hardlocks when you shoot an invulnerable Ninja Pirate (when the beam bounces off) with any Spazlma combo. :^_^:
Yeah :(
You're gonna have to pick between bang/reflec/fighter pirates or spazer+plasma for the time being.
If you don't want the game to crash, I recommend retooling one of the several unused fighter pirates- it seems that despite having almost entirely the same enemy DNA, they don't reflect shots at all.
Unfortunately changing the shot AI doesn't stop the lower norfair fighters from reflecting shots... so that's strange. You'd probably have to ask someone to make a patch for them, make them *block* shots instead of reflecting them in their gray form.

RealRed

Was gonna edit, but I think I'll bump since I have good news.

0x190894 -- 22 00 BE 90 to EA EA EA EA

0x19083E -- AE to 6B

With these changes, fighter pirates will block samus' projectiles instead of reflecting them. This is tested and works perfectly with JAM's patch.
I know that this is a trade rather than having both features, but the pirate's reflected shots didn't hurt samus anyway, so it's was entirely cosmetic to begin with.
This way, you can have both fighter pirates and spazer+plasma without any crashes, and coding for brand new replacement projectiles won't be necessary.

Also for fun, if you leave out the second change:

Hilarity ensues.

Jiffy

That fun effect reminds me of Nightmare in Fusion. Hey Metaquarius, you should put that in to Super Metroid Fusion. :^_^:

JAM

Bloodsonic
Thank you for everything you did. It motivates me to finish this patch eventually. And thank you for that Space Pirate solution. Better than "don't shoot Ninja Pirates with Plazmer". So, we'll get more or less stable version (0.996) becaues of you, which I can move to 1.000 eventually.

About the picture, I LOL'ed... Fire Ninja Pirate to launch the Missile to the stratosphere. There is another solution I have in mind. Not everybody knows (but JX users knows, I hope) that there 6 Ninja Pirates (1 of each type) and only one of them can actually reflect shots. So, I can make them all refect the shot (wait for a patch) or make none of them do that (for S+P patch).

Anyway, with version 0.996 I'll release a patch. An item. Call it "Full Combo". With this patch you'll be able to mix the beams only having this item. I mean:
1. Get Spazer.
2. Get Plasma.
3. Get Full Combo. Only now you mix the beams.

Why? Just because with this patch right after getting Plasma you'll get the POWER. Too much power. If someone helps with making an item icon, it'll be great.

RealRed

Yeah, JAM, no problem. This is one of the coolest hacks out there, and I'd like to help out where ever possible to see it finished.



Made this just now. I noticed a few discrepancies in the gif, but they're fixed in the gfx file.
Hope it helps!

Kitsune_Phoenix

#94
*deleted post*

RealRed

#95
I've got a new bug... Along with a fix :)
Charge your beam with powerbombs selected, the game will crash.
At $90CCF0 is the SBA table. two bytes for every beam combo that existed in the original game.
at $90CD08, there's 00 00 40 00 80 00 C0 00
We need to put here 18 CD 18 CD 18 CD 18 CD (18 CD means no SBA), and our issue is gone!
However, the bytes that were there are used by plasma's SBA, which is now fucked up.
at $90CEBB is a pair of bytes, 08 CD... look familiar? It's a pointer to those bytes we overwrote, which we can now move elsewhere!
so pick a spot in bank $90 with 8 consecutive FFs, and we can point to there, and put 00 00 40 00 80 00 C0 00. Or something else, you can change the starting locations of the bomb explosions as you see fit!

EDIT: That's strange... this was an issue in my hack, but not in super metroid..? I guess this was actually kind of an idiot post.
Well, might as well mention that this table was moved to $90FEA0 with the patch, among other things. below I see accelleration speeds and palette pointers. :)

JAM

For the last post:


For the GFX you made, thank you =)

JAM

I'll make this clear. If you had applied my patch and AFTER IT changed some beam data, such as speed, accelaration etc. your game WILL crash. If you're planning to do so, you'll need to do it manually, because ALL beam related arrays were repointed and some of them -- just expanded.

MetroidPeter

Whoa! I just found this thread! I always wondered why SM didn't let you use both Spazer and Plasma beams... I hope this turns out nicely!

Lucky Dearly

#99
I dunno if this was reported or not but when starting a new game with this patch on causes a freeze up during the intro. I wanted to try this patch on Super Metroid Ceribis though the game crashes on the story intro. I dunno but I think it may have to do with something in the ASM on the hack causing a conflict.