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

Quietus

I don't believe so.  According to JAM's earlier post, you should just enter the equipment screen, and equip / unequip as you would any other beam.

In case you're so new to Super Metroid that you are unaware, you need to press Start to go to the map screen, press Aim Up to access your inventory screen, move the cursor around until it's above the beam you want to equip / unequip, and press the run (it's run or jump) button.

GoldenTorizo

#51
Quote from: Zhs2 on May 20, 2013, 06:24:35 AM
Equip Plasma and Spazer at the same time, presumably. (Does it still require pressing left+A at the same time (e.g. the Var cheat)?)
I did that, the game freezes. I don't know what I'm doing wrong.

Ok, finally got it working. I just realized something... Bomb Torizo is immune to Ice Beam...

I also encounter a bug in the game. I tried to kill Phantoon with the Plasma/Spazer combo and he didn't die. His death animation didn't start, he just stood there.

Quietus

Hopefully, you're just reporting these bugs to help JAM out, but just in case you're unaware, this patch is not complete yet, and is a work in progress.

Zhs2

Quote from: Zhs2 on May 16, 2012, 08:27:05 AM
Basically, the enemy takes overkill damage and there aren't checks in place for this exceptional damage that literally causes their health to overflow so the game has no idea how to handle it.

Not to mention already mentioned...

GoldenTorizo

Quote from: Quietus on May 21, 2013, 07:11:16 PM
Hopefully, you're just reporting these bugs to help JAM out, but just in case you're unaware, this patch is not complete yet, and is a work in progress.
Well I found another one, if you shoot Ridley's guard's while they aren't exposed the game will freeze.

Quietus

Again:
Quote from: Zhs2 on May 16, 2012, 08:27:05 AM
Basically, the enemy takes overkill damage and there aren't checks in place for this exceptional damage that literally causes their health to overflow so the game has no idea how to handle it.

Black Falcon

Nintendo inserted a check for when any beam damage is negative (ie it would actually heal the enemy instead of damaging it) the game gets stuck in an endless JMP loop, which is basically intentionally freezing the game.
I believe they did this for debugging purposes to make sure every beam combo has positive damage.
Therefore, there must be an issue with the beam reading its damage value correctly.
Dunno how JAM did it, but it seems that he wrote additional checks for the new combos in the enemy shot AIs, but forgot to write it for Ridley's AI, too.  :wink:

RealRed

#57
:archie:

I think it would be fantastic if I could use this patch; I'm a little bit hesitant though, primarily because I want to make a few changes to make sure that this patch isn't game-breaking (and don't know how).

1.  Where do I find the damage values in order to change them? (probably the easiest, but I don't especially want overpowered beams crashing the game when hitting enemies)

2. Can I change what vulnerabilities the beam mixes hit?

3. What free space does this patch use?

If I could address these issues, I would be very proud to have this outstanding mod as a part of my hack.

Quietus

Quote from: JAM on May 14, 2012, 08:30:01 PMFree space used:
87EA0..87EBF
#include v0.99.data
That was the last JAM mentioned, but I don't know if he's used more since.


JAM

Quote from: Quietus on May 21, 2013, 07:11:16 PM
Hopefully, you're just reporting these bugs to help JAM out, but just in case you're unaware, this patch is not complete yet, and is a work in progress.
^this.


Quote from: Black Falcon on May 22, 2013, 10:18:32 AM
Nintendo inserted a check for when any beam damage is negative (ie it would actually heal the enemy instead of damaging it) the game gets stuck in an endless JMP loop, which is basically intentionally freezing the game.
I believe they did this for debugging purposes to make sure every beam combo has positive damage.
Therefore, there must be an issue with the beam reading its damage value correctly.
Dunno how JAM did it, but it seems that he wrote additional checks for the new combos in the enemy shot AIs, but forgot to write it for Ridley's AI, too.  :wink:
There isn't negative damage, as Black Falcon said. Max damage is 1500 ($05DC). There's just overkill. For some bosses, like Phantoon, there is just no instructions if his HP underflows. I think because there is a check for damage (if it's not too high, don't disappear. If it's, disappear. If shot by Super Missile, get mad, bad and anrgy =) ).

And I haven't touch any boss AI's at all =)


There are 3 things needs to be done:
1. Fix the Phantoon.

As for the Kraid, you could simply double, triple or quadruple his HP to prevent this bug.


2. Fix the vulnerabilities. I tried to find the vulnerabilies subroutine, so I could rewrite it, but failed. If anyone knows as least the location of this sub, please let me know. So, yeah, I need a help. Looks like it's around $102500, but I'm not sure.

Without it, the game will count Spazer/Plasma shot as Missile shot and vice verca (talking about vulnerabilities), Wave/Spazer/Plasma as Super Missile shot and so on.

So, currently 4 new Spazer/Plasma combination are sharing it's vulnerabilies with Missiles, Super Missiles, Power Bombs and Bombs because Missile it just next in the list after Ice/Wave/Plasma. So, if Super Missile can damage current enemy, then Wave/Spazer/Plasma could it too (even if it's a boss like Ridley).

3. After doing point number 2, get ready to change EVERY vulnerability for EVERY enemy. Prorably, I'll use unused var (marked like Spazer/Plasma in SMILE). In that case, no need to mess with each enemy. Or I can expand the vulnerabilies array to add these values:
Spazer/Plasma
Wave/Spazer/Plasma
Ice/Spazer/Plasma
Ice/Wave/Spazer/Plasma

If I do the second, then even SMILE will need to be tweaked to be able to edit these vulnerabilies.

4. Minor fix of debug. Don't know what causing it, but my patch somehow activates the debug features without need of entering the master code.

5. Minor fix in Draygon room. To make it perfect. But this one requires another few months of work.


Also, the Full Combo item can be made. It simply allows to Spazer and Plasma beams can be mixed or not.

Now, for the questions.

Quote from: Bloodsonic on June 04, 2014, 09:08:50 PM
:archie:
I think it would be fantastic if I could use this patch; I'm a little bit hesitant though, primarily because I want to make a few changes to make sure that this patch isn't game-breaking (and don't know how).
Well, I'll try to make it not break the game.

Quote from: Bloodsonic on June 04, 2014, 09:08:50 PM
1.  Where do I find the damage values in order to change them? (probably the easiest, but I don't especially want overpowered beams crashing the game when hitting enemies)
First word at:
$9F008: Spazer/Plasma
$9F01E: Wave/Spazer/Plasma
$9F034: Ice/Spazer/Plasma
$9F04A: Ice/Wave/Spazer/Plasma
$9F060: Charge/Spazer/Plasma
$9F076: Charge/Wave/Spazer/Plasma
$9F08C: Charge/Ice/Spazer/Plasma
$9F0A2: Charge/Ice/Wave/Spazer/Plasma
$983BF: Hyper Beam

Quote from: Bloodsonic on June 04, 2014, 09:08:50 PM
2. Can I change what vulnerabilities the beam mixes hit?
Yes, but it's also affects vulnerabilities of Missile, Super Missile etc. Read above.

Quote from: Bloodsonic on June 04, 2014, 09:08:50 PM
3. What free space does this patch use?
$87E00..87FFF
$9F61D..9F8B7 (with a lot of data overwriting in this bank, so it's like $98000..9F8B7 to count already used space).

Quote from: Bloodsonic on June 04, 2014, 09:08:50 PM
If I could address these issues, I would be very proud to have this outstanding mod as a part of my hack.
I'd like to fix it, but the most problem is vulnerability array.

Kitsune_Phoenix

#61
*deleted post*

JAM

Quote from: Kitsune_Phoenix on June 07, 2014, 01:17:46 AM
Regarding Kraid... Why not make his health scale when you are using Spazer/Plasma combos, to prevent him from being too hard for people without plasma?
Because the vulnerabilities are shared currently as I mentioned above. If you make Kraid more immune to Spazer/Plasma combos, then it'll be more immune to Missiles and Super Missiles.

Also, I think he's too easy in vanilla. 10 Missile or 4 Super Missile shots and that's all.




Good news everyone!

I've founded the vulnerability array location. Man, it's not loading into RAM at all. It's pointer is stored to zero page RAM address $28, while the beam parameters is stored to $14. After being hit, enemy loads the data from the ROM, not the RAM. It was really hard to find (specially if you can't find what you're expecting to and you have to search for something else, not knowing what exactly to search) and it costs 1 sanity point for me. 97 is left.

So, I'll expand the array and every enemy in the game should have it's vulnerabilities changed. Space in bank $B4 will be enough for that, don't worry.

If you haven't noticed, progress is changed to 993 permille (just for understanding of what to do). One step forward. Prorably the hardest step ever (or at least one of them).

JAM


RealRed

Fuck. Yes.

... also, I don't think you should worry about the health overflows with the boss fights.
First of all, in the original super metroid, it's exceedingly difficult for normal players to have plasma before fighting Kraid and phantoon (especially phantoon...). Plus, isn't the hack meant to be an add-on, so you can add a new capability to your hack? Maybe I'm just thinking about compatibility right now.

Also as much as I hate to suggest it, kraid would still be vulnerable to charge beam, and charged icewavespazerplasma would still probably fuck everything up since charged has only one single vulnerability it hits.

JAM

#65
One more ‰ is passed.
Good news everyone!
Phantoon is fixed!
Not perfectly. If you kill him with Ice/Spazer/Plasma/any other combination, it'll freeze for a 5 seconds, but not for eternity.

ROFL, it was so easy to fix... Just change 4 bytes at the right place.


EDIT: Phantoon fix is fixed. Since vulnerabilies are no longer shared with missile projectiles, setting correct values is all that was needed.

Quote from: Bloodsonic on June 09, 2014, 12:41:07 AM
Fuck. Yes.

... also, I don't think you should worry about the health overflows with the boss fights.
First of all, in the original super metroid, it's exceedingly difficult for normal players to have plasma before fighting Kraid and phantoon (especially phantoon...).
Yes, but possible. And I'd like to fix all possible bugs.

Quote from: Bloodsonic on June 09, 2014, 12:41:07 AM
Plus, isn't the hack meant to be an add-on, so you can add a new capability to your hack? Maybe I'm just thinking about compatibility right now.
It's more like add-on than a hack. Of course, you can just apply the patch to original game and play it with upgraded arm cannon. Just as most of us dreamed. =)

Quote from: Bloodsonic on June 09, 2014, 12:41:07 AM
Also as much as I hate to suggest it, kraid would still be vulnerable to charge beam, and charged icewavespazerplasma would still probably fuck everything up since charged has only one single vulnerability it hits.
Well, I'll see what I can do with Kraid.

Su

You're picking up speed with a pleasurably alarming pace. I bet five virtual cookies you either declare 99.95% within a fortnight or finish this two posts from now.

personitis

Quote from: Dragon-Tamer795 on June 13, 2014, 05:16:36 PMor finish this two posts from now.
Be this the case, everyone start posting! :heheh:

Lets also not forget any enemies that reflect shots also cause crashes. Just felt I should reiterate that.

Kitsune_Phoenix

#68
*deleted post*

Su

Quote from: Kitsune_Phoenix on June 13, 2014, 05:25:34 PM
deleting it and spawning a new one

Why do that? How difficult in the relative terms of the impenetrable nightmare that is ASM would it be to code a routine that altered the current projectile?

Kitsune_Phoenix

#70
*deleted post*

Su

Ah, okay. Second question: How difficult in the relative terms of the impenetrable nightmare that is ASM would it be to do what you suggested?

Kitsune_Phoenix

#72
*deleted post*

Hawntah

Quote from: Kitsune_Phoenix on June 14, 2014, 07:18:58 PMEdit: I have a better idea, maybe instead of a delay it should be a checksum. Whenever "reflected" = false, your projectile cannot hurt you, but upon being reflected by an meet the projectile is changed to "reflected" = true, and thus it can hurt you.
I think you mean variable, not checksum.

Kitsune_Phoenix

#74
*deleted post*