News:

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

Main Menu

Super Metroid: Recovery

Started by MetroidNerd#9001, October 06, 2018, 12:14:07 AM

Previous topic - Next topic

MetroidNerd#9001

I've been making it, and you've been waiting for it.
13 months and 514 backups later, it's finally here!

Samus has lost her upgrades (again) after her mission on SR388. Journey with her back to Zebes to find the Infant Metroid and to recover her lost abilities. This hack takes the map of the original game and brings a new spin on what you think of as Super Metroid. Explore reimagined rooms with a new item and boss order, as well as two extra minibosses. Many quality-of-life patches and hex tweaks have been applied to make your playing experience smooth. Though for the most part as difficult as the original, there are some parts that are much more difficult. Will Samus be able to recover her upgrades, or will the universe be doomed to domination by the evil Space Pirates?

Here is a snippit of the hack for you.
[spoiler] [/spoiler]

Credits:
Black Falcon's Ceres skip
squishy_ichigo's Event PLM
DC's Map patch
PJBoy's Scrolling sky fix
Kejardon & Scyzer's Respin
Scyzer's Save-Load patch
Jordan5's Stoke fix

I hope you enjoy the hack as much as I enjoyed making it. If you have any comments or suggestions, please tell me. I want to do everything in my power to make this hack better in any way possible. Without farther ado, I present to you, Super Metroid: Recovery!

UDtheAesir

Just beat Phantoon with 2 E-tanks and 30 missiles like 10 minutes into the game. Turns out if you just use charged beam shots at this point, Phantoon will keep flying around for about 10 seconds instead of vanishing normally after the row of fireballs at the top. Great fight, bloody well done! Looking forward to the other bosses.

caauyjdp

#2
For some reason, missile refill stations always activate in this version, even if you have full missiles. Checked with stations before kraid and before grapple all stations I found.
Worked normally in previous version.

edit: Just noticed that golden torizo is locked behind crocomire. I get that it's probably bad to let players enter crocomire from the right side, but it might be better to just block backdoor to crocomire instead of blocking off that whole section of the map by two boss locked doors.

MetroidNerd#9001

The missile recharge stations always activating is a side effect of the patch that makes them refill Supers and Power Bombs in addition to missiles.

caauyjdp

#4
Was a bit bored today, so decided to try to change this refill station behavior. Seems to be working without breaking anything.
ASM patch works on top of v. 1.0. Uses freespace 84FFE3-84FFF9, right after modified refill code
[spoiler]lorom

; "Missile Station Enhancer by MoogleEmperor" used as base

!maxmissiles = $09C8
!missiles = $09C6
!maxsupers = $09CC
!supers =  $09CA
!maxpbs = $09D0
!pbs = $09CE
!maxenergy = $09C4
!energy = $09C2
!maxreserve = $09D4
!reserve = $09D6

org $848CD2
; replacing original missile check. recovery uses this to call own refill, we'll put it in a bit later
JSR FULLAMMOCHECK
NOP
NOP
NOP
;restore original "branch if full"
DB $F0,$0D

;put recovery refill where it was done in the original code
org $848CE1
JSR MODIFIEDREFILLALLAMMO
NOP
NOP
NOP

org $84B2E8
; First change to disable check if missiles are maxed.
JSR FULLAMMOCHECK
NOP
NOP
NOP
;restore original "branch if full"
DB $F0,$08

org $84B31B
; Second change to disable check if missiles are maxed.
JSR FULLAMMOCHECK
NOP
NOP
NOP
;restore original "branch if full"
DB $F0,$08

org $84AEBF
; Third change to disable check if missiles are maxed.
JSR FULLAMMOCHECK
NOP
NOP
NOP
;restore original "branch if full"
DB $F0,$03

org $84FFD0
MODIFIEDREFILLALLAMMO:

org $84FFE3

FULLAMMOCHECK:
LDA !maxmissiles
CMP !missiles
BNE FOUNDONETHATISNOTFULL
LDA !maxsupers
CMP !supers
BNE FOUNDONETHATISNOTFULL
LDA !maxpbs
CMP !pbs
FOUNDONETHATISNOTFULL:
RTS
[/spoiler]
Feel free to use as is, use to modify your own missile station patch or ignore. I was just curious if I could do it.

ianfrombristol


UDtheAesir

Beat it with 96% items and under 7 hours. Good hack, I liked how different it is in leaps and bounds while sticking to the vanilla scheme and mixing up the items. The escape was fun as hell, can see some very good ideas in there. Good job, man. Couldn't find 25 other power bombs or the last 3 e-tanks.

Dessyreqt

Good hack, here's my playthrough:

[spoiler]
https://www.twitch.tv/videos/320465120
https://www.twitch.tv/videos/320657125
Completion:
[spoiler]
77% in 4:16
[/spoiler]
[/spoiler]

I appreciated that the game was so wide open. I know I didn't take a "traditional" path and it was still pretty fun! Plus I think I figured out something new on the way to Draygon so that was cool.

caauyjdp

#8
This was more annoying to do, but I found a way to fix the samus moving slightly forward when landing from normal or spin jump.
ASM patch works on top of v. 1.0. Uses freespace 90F659-90F696(didn't seem to be any in 91, but I wasn't really searching).
Restores original landing poses if horizontal "momentum" is zero.
It's ugly but it seems to work(haven't played through the game with it yet).
[spoiler]
edit: Tweaked code a bit with what I learned, removing unnecessary addition and unnecessary 24bit address to samus momentum. Original code still in spoiler further down.

lorom

;uses free space 90F659-90F691
org $90F659
spinjumpentrypoint:
PHP ;push flags
PEA $0002 ;since it's a spinjump landing, set additional offset to two
BRA fromspinjump
normaljumpentrypoint:
PHP ;push flags
PEA $0000 ;since it's a regular landing, set additional offset to zero
fromspinjump:
CMP #$000A ;facing left
BEQ correctpose
CMP #$0009 ;facing right
BEQ correctpose
PLP ;move stack pointer, didn't find a better way to do it
PLP
PLP ;pop flags
STA $0A28 ;do oppcodes we've overwritten
CLC
RTL

correctpose:

PHA
LDA $0B46 ;check if two parts of samus "momentum" are zero.
BNE moving
LDA $0B48
BNE moving
PLA
CLC
ADC #$009B ;difference between landing and moving poses
ADC $01,S ;add additional offset of two if it was spinjump landing. was set during entrypoints
BRA skippla
moving:
PLA
skippla:
PLP ;move stack pointer, didn't find a better way to do it
PLP
PLP ;pop flags
STA $0A28 ;do oppcodes we've overwritten
CLC
RTL

org $91E9E6 ;spinjump landing facing right = A6
JSL spinjumpentrypoint
org $91E9EE ;spinjump landing facing left = A7
JSL spinjumpentrypoint

org $91E98E ; landing facing right = A4, facing left = A5
JSL normaljumpentrypoint

[spoiler]
lorom

org $90F659
spinjumpentrypoint:
PHP ;push flags
PEA $0002 ;set the isitspinjump delta
JMP fromspinjumpentrypoint
normaljumpentrypoint:
PHP ;push flags
PEA $0000 ;clear the isitspinjump delta
fromspinjumpentrypoint:
CMP #$000A ;facing left
BEQ correctpose
CMP #$0009 ;facing right
BEQ correctpose
PLP ;move stack pointer, didn't find a better way to do it
PLP
PLP ;pop flags
STA $a28 ;do oppcodes we've overwritten
CLC
RTL

correctpose:

PHA
LDA $7E0B46 ;add two words of samus "momentum"
CLC
ADC $7E0B48
BCS moving ;in case we overflowed, but added up to exactly zero
BNE moving
PLA
CLC
ADC #$009b ;difference between landing and moving poses
ADC $01,S ;add the isitspinjump delta
JMP SKIPPLA
moving:
PLA
SKIPPLA:
PLP ;move stack pointer, didn't find a better way to do it
PLP
PLP ;pop flags
STA $a28 ;do oppcodes we've overwritten
CLC
RTL

org $91E9E6 ;spinjump landing facing right = A6
JSL spinjumpentrypoint
org $91E9EE ;spinjump landing facing left = A7
JSL spinjumpentrypoint

org $91E98E ; landing facing right = A4, facing left = A5
JSL normaljumpentrypoint
[/spoiler][/spoiler]


[spoiler=long and boring rambling that should be on a blog that nobody reads]
Watching Dessyreqt play reminded me about ceiling clip from crouch jump thing and your red tower was good enough incentive to learn it. Those items can be picked up as soon as you get bombs or x-ray(just managed to grab all with just x-ray. going to explore zebes in before missiles state. no mb pb in this room state, fix please?). Doesn't really break anything since you can get mb pb with 3 e-tanks already, and supers can be picked up as 2nd item, but makes that stash of items even more cheesy. Might be enough to survive norfair without varia now...

Also noticed odd visual thing:
[spoiler]
That black 1wide2tall thing between samus and door looks like it's maybe part of the background, but it doesn't move with it. More noticeable in motion than on screenshot ofc.

[/spoiler]

yetanotheredit: backdoor to wrecked ship isn't phantoon locked, yay, but when I went inside and up, pre phantoon state of the room doesn't have an item in it(vanilla had etank in this room, recovery has supers iirc, held by standing chozo statue). grapple platform enemies are missing too, and powered down spiky platforms are missing from the other room.
either lock the door, or populate these room states too please.

suitless norfair is hell. killed crocomire(had to grab maridia pb to be able to crystal flash. it's seems humanly doable without flashing, with 6etanks/3reserve&nospacejump) and got wave without varia, working on speed, although it seems like I'll have to pray for amazing drop rng to get back from bubble mountain pb first.

edit: progress! grabbed speed without varia. ended up collecting 9 etanks and all the pbs(had to farm 2 pbs near pre ridley save on the way back, was lucky to notice those enemies can drop them) before I could do that but probably gettable with less.
remember kids, sometimes it's safer to missile the pirates to death instead of facetanking through them, which is what I was doing before final run.
speed means I can get at least two more etanks, and with two crystal flashes I should easily be able to get to pre golden torizo refill stations and deal with him.

edit: *sigh*, no ws reserve before phantoon. please fix. ..and missiles. also these things:
[spoiler]
Leftover geometry in top right

No bowling on sunday?

[/spoiler]
and grapple. and etank behind work robots in that one room.
and top room of ws is just... sad when entered from the left before phantoon :(



And I do understand that I'm asking to fix things that are lowest priority, and won't affect majority of players. I just really like when developers pay attention to small details and possibilities. Makes exploring more worth while for me. So, feel free to ignore :)



edit: gt done and safely away. who needs weaknesses when there's plasma. ridley next I guess...

another edit: well, I can get to ridley with about half of 11etanks left and 350 reserve and enough ammo for two crystal flashes. the four refill bugs spot is decent enough with space jump and screw(except that it takes forever, especially if you also want to refill pbs).  problem is actually getting good and killing ridley, which I'm bad at even in vanilla with suits(I <3 facetanking).
ended up going back to try draygon instead knowing how Dessyreqt did it. surprisingly easy to do as long as you don't fall deep into the sand. did it mostly the same way, except that I walljumped and midair morphed instead of double jump from crumble blocks, and I walljumped instead of learning igj in draygon's room.

iirc remaining two etanks are ungettable yet, because one requires gravity+speed, and other turned out to be missing because phantoon is a jerk. he also hides a super and makes one that kind of needs grapple very annoying to get.
going to to find two other supers if i can get them(or even remember where they are) and try to learn nuke ridley... or give up. it's good to have options :)
[/spoiler]


$#$#^$^##$#!!!

Suitless with phantoon last is definitely possible, might try it later, still have pre ridley save copied in slot b. Just abused modified space jump to stay near the ceiling with screw attack giving immunity to everything except tail(which I was usually above of).

And I kind of realized that I never mentioned why I was doing this? It started because I felt that too many upgrades were locked behind phantoon:
[spoiler]grapple, varia(and all the upgrades in norfair) and hi-jump(and access to top of maridia pre ridley in general)[/spoiler]
I started to write a suggestion to maybe change that, but decided to check what was actually required, and if they were actually ungettable. 50ish hours later, here I am :p
It's been a great excuse to learn tricks which I never bothered to learn before(why waste time learning a trick that saves frames when I'm not a speedrunner).
Phantoon still hides too many upgrades, but "technically being able" to get around that is enough for me.

P.S. The room west from landing site(one with the Alcatraz in vanilla) is somewhat difficult in escape without hi-jump or space jump. Can't quite make the last jump to top level from left pit. Path up also seemed unobstructed from door straight to the top, meaning you could try to charge speed in the room before, but it also means if you want to try ibj straight up, you have a long way to go. Door also closes behind you so if you didn't know to charge speed beforehand, you can't go back and do it. Only tried it twice(3-4 minutes total) because refighting mb takes too long.

MetroidNerd#9001

#9
Thank you so much for your help in fixing the jump pixel glitch thingy. It and a few other things have been fixed for the release of version 1.01.

Version 1.01 changes:
Fixed glitch with moving forward after landing from a jump. (Credits to caauyjdp)
Fixed a scrolling error that would allow Samus offscreen and break scrolling.
Fixed a couple of tiling and sloping errors.
Made items obtainable in the Wrecked ship before Phantoon's defeat.
Fixed a couple of errors present in the map, and made more items marked by item dots.

I may have missed a couple of things, but I hope this makes things a bit smoother. On another note, @caauyjdp, would you be ok if I were to combine your ASM with the original hex tweak and put them up on the main site as a patch to make this easier for people to find and use? I'd put you as the author (and the person who found the hex tweak if I can find out who they are).

caauyjdp

Quote from: MetroidNerd#9001 on October 20, 2018, 01:51:14 PM
On another note, @caauyjdp, would you be ok of I were to combine your ASM with the original hex tweak and put them up on the main site as a patch to make this easier for people to find and use? I'd put you as the author (and the person who found the hex tweak if I can find out who they are).
I don't mind, just maybe change "org $90F659" to "org $90F63A" so it goes to beginning of vanilla freespace by default. And if possible add credit to whoever did disassemblies, especially bank $91, probably wouldn't have done it without those. I used http://patrickjohnston.org/ASM/ROM%20data/Super%20Metroid/Bank%20$91.asm, so it might have been P.JBoy, but I have no idea.

Thank you for the hack and the fixes.


MetroidNerd#9001

#12
Here is the zip file that contains the various components of the speedkeep enhancement and fix. I'm putting it here so I can eventually put it on the main site.

Credits:

Original Hex tweaks:
DSO
Rakki

ASM Fix:
Caauyjdp who would also like to thank PJboy for his disassembly.

This is just mainly here to make it easier to use speedkeep and not have to deal with the glitch.

MetroidNerd#9001

I think it's about time to release Version 1.1, just in time so you can play it before the nature hype train kicks into full gear tomorrow.

Version 1.1 changes:
Redesigned part of the room before the Wrecked Ship to better utilize the space and to foreshadow the pickup in it.
Redesigned the room before that to look more natural and less blocky.
If this was not already fixed in 1.01, I made fewer speed blocks respawning to reduce the chances of permasucks.
Added tiles into some red scroll blocks that are inner corners so that random black tiles are not seen when the camera clips into them.
Edited a bit of lower Norfair's tiling to use more of the temple tiles in addition to the regular tiles.
Moved platforms around in the Red Tower to make it more navigable upwards without Hi-Jump.
Fixed a problematic level data pointer in an alternate roomstate in Maridia that would crash on some emulators.
Switched two sets of items to make the power of each item more accurately reflect how difficult they are to get.
Edited Speed Blocks at the bottom of the Red Tower to prevent falling out of bounds with blue suit.
Edited room in Wrecked Ship before Grapple to make the missile obtainable before Speed Booster, and only one shaft actually lead to the middle part of the room. Also made the top of the room accessible from the bottom with Speed Booster and edited the ledges in that shaft to make them make more sense.
Changed pipe morph mazes in Maridia to where Samus is in between two pipes and not within a pipe so she can be seen while navigating the mazes.
Changed missile near glass tube in Maridia so that Speed Booster can break through the top of the column to get to it.
Other minor tiling changes that I can't remember off the top of my head.

I hope that these changes serve to make the hack more accessible and less annoying to go through! Enjoy!

MetroidNerd#9001

#14
Version 1.2 took a lot longer for me to make than it really should have. I mostly didn't have much time to work on it, but I was also focusing on other hacking projects. Either way, here it is.

Version 1.2 changes:
Added a few refill bug spots in Lower Norfair.
Rebalanced Pink Pirates to better fit Maridia's place in the game's sequence.
Added another shortcut to the escape. (You'll have to find it yourself)
Added changed level data pointer to escape shaft for when Power Bomb Blocks are cleared out.
Added roomstate to Purple Pirate room to make it into a regular room after the miniboss is defeated.
Used caauyjdp's ASM fix to the missile station bug.
A lot of minor level design changes I cannot remember or keep track of.

Report any bugs to this thread, and give suggestions here as well if you want something changed. Enjoy!

MetroidNerd#9001

Version 1.21 is a minor update that fixes the old Tourian Mother Brain room to always be active, even if Missiles are skipped. This was done to allow Missiles to be skipped in low% runs, and also because the room state makes no sense given the rest of the hack.

Kapow

Ran into a couple serious bugs:

[spoiler]
Shinesparking into this ceiling is a soft lock. I'd suggest making these speed blocks not respawn while you're in the room.


Is there supposed to be a statue here? I had to damage boost across the spikes, couldn't go back because the speed blocks respawned, which seems unnecessary.[/spoiler]

And a couple minor ones:

[spoiler]
2 of the visited map squares were blue until I went back to those rooms. I noticed it later, no idea what caused it or when.


X-ray shows an invisible reserve tank next to this power bomb wall. It doesn't seem to do anything, and it's still there after destroying the wall.


Another x-ray reserve tank. Maybe something related to the walls being permanently destroyed? A side-effect of custom code?[/spoiler]

Also, a question:

[spoiler]
How do you get down here? I got 100% items but never found a way to break these.[/spoiler]

MetroidNerd#9001

Serious Bug 1: I was notified of the problem and fixed it a while ago, but only for one roomstate. Thank you for letting me know that I forgot to fix the other room state.

Serious Bug 2: I probably should make a way back down for people who don't want to go over the spikes. You're "supposed" to have Space Jump, but it is not required by any means. There is no statue. I just need to not be lazy and put another Scroll PLM for going back down. (I don't think I knew how to use them when I first made the room)

Minor Bug 1: I have no idea why that happens, but it always seems to. If anybody else knows why this happens, I would love to know.

Minor Bugs 2-5: That is the Event PLM showing up. You were correct in your observation. This is not the only hack where this happens. It happens in Z-Factor and probably a lot of other hacks that use the PLM, or probably other custom PLMs too. I don't know how to fix it.

Random Question: That is where Samus comes up if she shinesparks up from the room in Norfair directly below Red Tower. It is the "Intended" way to get the items in the Red Tower Cache, and also is a shortcut from Norfair after getting Speed Booster, but almost nobody gets the items this way. The speed blocks used to go all the way to the bottom, but then it became possible to fall out of bounds with Blue Suit.

Thanks for your input! The serious bugs will be put out in the next released version, but I don't know how to fix the minor bugs. I don't know when I will get around to making version 1.3, as I am busy with my next hack, but I will make sure to fix these things, among other issues, when that time comes around.

Kapow

Quote from: MetroidNerd#9001 on July 21, 2019, 10:10:03 PM
That is where Samus comes up if she shinesparks up from the room in Norfair directly below Red Tower.
Aha, found it. I actually checked the ceilings of the rooms nearby but I didn't look far enough.

caauyjdp

Did minor poking and might have a possibly working quickfix for Event PLM (http://metroidconstruction.com/resource.php?id=294) appearing on x-ray.
This is terrible code because I didn't fully test it and I don't understand internals well enough to guesstimate if it's safe, but it was working as intended in few rooms, and didn't seem to crash which might be a good sign.
Adds a special case for event plm to get treated as non item plms.

lorom

org $848328
jmp hijack
hijackreturn:

org $84835F
hijackreturn2:


org $84f0d2
hijack:
cmp #$F060
beq fakenonitemplm
cmp #$df89
jmp hijackreturn
fakenonitemplm:
jmp hijackreturn2

MetroidNerd#9001

I'm slipping in this tiny update for Super Metroid: Bluestar here since I can't post in the contest thread anymore. Basically, I was speedrunning Bluestar and I got fed up with this one tiny sloping error in one room, so I decided to fix it, but for the sake of fairness, I have to make it public, so I am releasing Bluestar Version 1.11 here so I can update the main site.