ROM Hack Metroid: Other M Redux (Based on Maxximum Edition)

  • Thread starter Thread starter ShadowOne333
  • Start date Start date
  • Views Views 131,085
  • Replies Replies 509
  • Likes Likes 19
Hello! It's been a while since I checked in on this project here. Amazing work! This is definitely my favorite way to play this game, and has been for a while now. However, I have a few questions on the feasibility of some potential improvements to the project.

1. During in-engine cutscenes that take place after obtaining the Gravity Suit, Samus' suit is still set to the Varia Suit like in the original game. The disconnect between the ingame Gravity Model (which looks great) and the cutscenes is kinda annoying for me, so I was wondering if there's a way to set the model in the cutscenes to the Gravity model. Admittedly, I don't know how the ingame cutscenes work, so please tell me if this is infeasible.

2. This is more of a subjective take, but I think the aura of the Gravity Suit is cool to still have, the pink aura combined with the new Gravity model doesn't look the greatest. Would it be at all possible to change the aura to a light blue? That way, it would match the way the Gravity Suit looks in Prime 1, and would look hella cool in my opinion. My best guess is that the aura is either a texture or a vertex color, and while I don't know too much about how the game handles the aura, it may be doable.

3. I think the Missiles in third-person, for the most part, is a massive boon for the game. However, there are two major bugs with it:
A. You can shoot Super Missiles in third person by releasing a charge while holding B. This works, but this can be done even before the player obtains Super Missiles in the main story, allowing the player to trivialize most of the combat beforehand if they wish (I personally don't abuse it, but I think the mod would be tighter with this fixed). Is it possible for Super Missiles to only be allowed when the player obtains them in the intended way?
B. This is a less pressing issue, but the player can third-person fire missiles even before they obtain them in the story. Admittedly, they're limited to 10 and can't refill them until they get Missiles during the Brug Mass boss fight, but it's still a bug nonetheless.

4. Possibly the most destructive bug is the way the new concentration mechanics work. While allowing the player to use energy Concentration anytime is a good idea, it's possible for the player to use it above their E-Recovery Tank level, which results in them losing health if they perform Concentration. While I'm well aware of this and don't energy recover above the E-Recovery threshold, it could confuse and frustrate newer players. If there's any way to fix this so the player can only recover below the E-Recovery level, this would be great.

Thank you for working on this project!

Hi there!
Glad you're enjoying the project, I'll try to address your points:

1. This is a known issue, and one that should be possible to fix, but I haven't found out what part of the code, or which file, is in charge of loading which model for the in-game cutscenes post-Sector Zero. It's on the Known bugs / Todo list.

2. That's certainly possible, I'd have to check what does the Gravity aura, if it's a texture within the actual model or if it's loaded as a normal texture apart from it, shouldn't be too hard to change it, was there any part in MP1 where the Gravity suit had an actual aura? I'll have to give that one a proper thought, since it'd have to be more in-line with Super Metroid instead of the Prime series, given how Other M is more of a direct sequel to Super.

3. That's a side-effect of the 3rd Person Missile. You can get Missiles and even fire Super Missiles way before you can use them, but that's unfortunately outside of my reach since this adapts the code that someone else made for it, so I don't know how to fix it sadly.

4. Same as with the Missiles issue, the Concentration code is based on the cheat code that modifies it, so the person who made it would have much better understanding on how to fix it.
 
I haven't yet explored the patching process. But, thank you for the work you have done to all involved! I have a few "returning noob" questions:

1. What is the easiest way to patch the R3OE01.wbfs file I dumped with my homebrew Wii about 15 years ago? The dump is apparently missing the unnecessary (i.e. system update) data and shows as a bad dump in Dolphin even though it loads and plays fine on the emulator as it did on my console when it wasn't packed away in storage.

2. Will HD/4K texture packs work in Dolphin on this version? If so, do I need to move any of the .dds or .png files around in the Dolphin texture folder?

3. Has there been an updated archive that fixes the audio discrepancies mentioned in the thread?

Thanks for any help!
 
I haven't yet explored the patching process. But, thank you for the work you have done to all involved! I have a few "returning noob" questions:

1. What is the easiest way to patch the R3OE01.wbfs file I dumped with my homebrew Wii about 15 years ago? The dump is apparently missing the unnecessary (i.e. system update) data and shows as a bad dump in Dolphin even though it loads and plays fine on the emulator as it did on my console when it wasn't packed away in storage.

2. Will HD/4K texture packs work in Dolphin on this version? If so, do I need to move any of the .dds or .png files around in the Dolphin texture folder?

3. Has there been an updated archive that fixes the audio discrepancies mentioned in the thread?

Thanks for any help!

1. I'd recommend using Wii Backup Manager to convert the WBFS back to an ISO. Or maybe even Dolphin can extract the data from the WBFS? If Dolphin can do so, then extract all the data using Dolphin. Once you have all the data extracted you can continue with the patching process to create a new ISO and then if you want, you can convert that ISO into a WBFS with Wii Backup Manager as well.

2. I assume they should, yeah, the only issue would probably be that the HD texture for the File Select with the Power Suit would most likely be overwritten. Same for the Power Suit textures since the in-game model and cutscene model for the Power Suit have been changed. Other than that, HD textures should work, just don't expect the modified textures from Maxximum/Redux to work with HD packs.

3. Which audio discrepancies are you talking about?
 
  • Like
Reactions: jmsalal
@ShadowOne333 sorry if this has been asked often, but with classic controller is there an option to invert y axis for the first person segments? i havent tried Redux, but i don't believe this was possible in Maxximum Edition (would love to learn i'm wrong, however).
 
What a great game. Shame that mindless fanbois moaned terribly how horrible that the game was for having a plot and a heroine, and we got tastleless cardboard placeholders instead of those in MP4
 
Hey Shadow first off thanks for this amazing looking mod! I can't wait to try it out.

I'm running into some confusion while building the ISO though, wanted to ask for some clarification:

1) Your instructions mention Other M v1.1 - as far as I can tell this...doesn't exist? Google says there was no v1.1 of Other M. Am I supposed to START with Maxximum Edition as the base that I'm modifying on top of rather than starting with a vanilla rip of Other M?

2) Your instructions on Archive.org say "Move and replace the folder Other M Redux/movie/ (extracted from the ZIP files) into DATA/files/movie/" - does this mean I should DELETE the 70 files in {ISO Root}/DATA/files/movie and only put in the 11 .SFD files from the Other M Redux/movie folder? Or am I supposed to take those 11 files and just overwrite the existing versions of them in the {ISO Root}/DATA/files/movie folder and leave the other 59 files in place and untouched?

Thanks!
 
  • Like
Reactions: jmsalal
Hey Shadow first off thanks for this amazing looking mod! I can't wait to try it out.

I'm running into some confusion while building the ISO though, wanted to ask for some clarification:

1) Your instructions mention Other M v1.1 - as far as I can tell this...doesn't exist? Google says there was no v1.1 of Other M. Am I supposed to START with Maxximum Edition as the base that I'm modifying on top of rather than starting with a vanilla rip of Other M?

2) Your instructions on Archive.org say "Move and replace the folder Other M Redux/movie/ (extracted from the ZIP files) into DATA/files/movie/" - does this mean I should DELETE the 70 files in {ISO Root}/DATA/files/movie and only put in the 11 .SFD files from the Other M Redux/movie folder? Or am I supposed to take those 11 files and just overwrite the existing versions of them in the {ISO Root}/DATA/files/movie folder and leave the other 59 files in place and untouched?

Thanks!
1) I'm sure there's a Rev 1 version of Other M, since there's an ISO out there that has an update folder within its files.
All in all, don't worry about the version, as I think both are interchangeable given how none of the modified files change between the two, possibly only the main.dol but I doubt it that breaks things.

2) if you're making a standalone ISO, you only need to grab the 11 SFD files from Other M Redux/movie and paste them inside DATA/files/movie. Only the 11 SFD files from the ZIP should be replaced, all the others should not be touched from the original ISO.
 
  • Like
Reactions: jmsalal
Hi there!
Glad you're enjoying the project, I'll try to address your points:

1. This is a known issue, and one that should be possible to fix, but I haven't found out what part of the code, or which file, is in charge of loading which model for the in-game cutscenes post-Sector Zero. It's on the Known bugs / Todo list.

2. That's certainly possible, I'd have to check what does the Gravity aura, if it's a texture within the actual model or if it's loaded as a normal texture apart from it, shouldn't be too hard to change it, was there any part in MP1 where the Gravity suit had an actual aura? I'll have to give that one a proper thought, since it'd have to be more in-line with Super Metroid instead of the Prime series, given how Other M is more of a direct sequel to Super.

3. That's a side-effect of the 3rd Person Missile. You can get Missiles and even fire Super Missiles way before you can use them, but that's unfortunately outside of my reach since this adapts the code that someone else made for it, so I don't know how to fix it sadly.

4. Same as with the Missiles issue, the Concentration code is based on the cheat code that modifies it, so the person who made it would have much better understanding on how to fix it.

Great work! I haven't played Other M since back when it first released but am planning to and will surely use Redux for that (actually, I want to replay the whole saga and will most likely use your Redux for ZM and Super as well, only small caveat there is no patch for the European version with subtitles for these two). However, I am concerned about some of the lingering issues:

1. It would be great if the issue with the model in cutscenes could be fixed somehow. Sadly, I also have no idea how model referencing works there.

2. Since the hacks for 3rd person missiles and concentration mode introduce their own problems, would it be possible to make a version without these (maybe also without the somewhat imperfect additional control schemes)?

Thanks and keep up the great work!
 
  • Like
Reactions: jmsalal
1. I'd recommend using Wii Backup Manager to convert the WBFS back to an ISO. Or maybe even Dolphin can extract the data from the WBFS? If Dolphin can do so, then extract all the data using Dolphin. Once you have all the data extracted you can continue with the patching process to create a new ISO and then if you want, you can convert that ISO into a WBFS with Wii Backup Manager as well.

2. I assume they should, yeah, the only issue would probably be that the HD texture for the File Select with the Power Suit would most likely be overwritten. Same for the Power Suit textures since the in-game model and cutscene model for the Power Suit have been changed. Other than that, HD textures should work, just don't expect the modified textures from Maxximum/Redux to work with HD packs.

3. Which audio discrepancies are you talking about?
Apparently, I misunderstood some previous post suggesting that Maxxximum or Redux introduced issues with audio. I may have been mistaken. Thank you for the info and hard work!
 
Good news. After years of going through the game files, learning and debugging, I have finally been able to solve the last two remaining issues of this project.
Both the subtitle syncing issue, and the cutscene model issue, have both been resolved.

It took quite a while, mostly due to the fact that Other M is one of those games that completely lacks any kind of documentation when it comes to its inner workings, so I had to pretty much dig around almost all of the numbered extension-less files to properly narrow down where the exact data for the subtitles frames and the cutscene model loading routine was found in, and interestingly, both of those were found within the REL file for the game (game.rel).

I'll give a slight detail on how both issues were found, just for documentation sake, but the complete documentation for both fixes has been added to the repository for Other M Redux as well:



  • Subtitle syncing fix:
    The subtitle data (not the subtitle texts, those are in message_all.dat) for all the cutscenes is located within the game.rel around 0x710000-0x720000. The subtitle data is stored in the format 0C A3 XX XX YY YY 08 16 ZZ ZZ, with each pair meaning:
    • 0C A3 = Display subtitle custom opcode (Next 2 bytes = subtitle ID, Following 2 bytes = duration)
    • XX XX = Subtitle ID / Message ID
    • YY YY = Subtitle duration on-screen (in frames)
    • 08 16 = Set frame timestamp custom opcode
    • ZZ ZZ = Subtitle trigger frame (in frames)
For dm36to43 (the Ridley cutscene), its subtitle data is located at 0x711438 and 0x711534. 0x711438 holds the subtitle data for the English audio track, while 0x711534 holds the subtitle data for the Japanese audio track, since both tracks are stored within the same SFD.​
For dm52to56 (the Sector Zero cutscene), its subtitle data is located at 0x711648 (English) and 0x711AD8 (Japanese) respectively
With that, and following the explained format above, I was able to properly resync the subtitles.​
One additional bit of information regarding the subtitle data, since I had to remove certain subtitles from appearing, I had to do two things:​
  1. Remove the text data for that specific message/subtitle ID. Simply blanking it out through a Hex editor with spaces does it.
  2. Change its frame data to a frame value before the next visible subtitle.
    • Since I changed the order of a lot of subtitles for both cutscenes, some of the removed subtitles had to also be moved in order for them to follow their correct subtitle order (I didn't want to bother with reordering the subtitles as well as their frame data). So with that, I had to move the subtitles so they didn't appear on-screen. I found out that if two subtitles have colliding appearing/trigger frames, then they don't show up at all when called. So I ended up cancelling subtitles that I wanted to remove by having them use the same frame trigger value, for example, two subtitles had their trigger frame set to 06 00, making them not appear on screen.
As you can see, the process was quite ellaborate, more so for syncing each subtitle for the corresponding cutscene to the proper frame, so they behave similarly to how they do in the original game (in terms of when and how long they appear on-screen) and matching them with the visuals.​



  • Cutscene model loading fix:
    This is the one that took me the longest to accomplish. I was working on both the subtitle and model fixes, and the subtitle data fix I had it ready by April 2026. The model one required a lot, and I mean a LOT of debugging to find the proper place to hook into and what to read from in order to make it possible.
    Here's a short summary of the problem with the cutscene models:
    • The original game handled which model to load depending on a set of comparisons against an ID of sorts starting at 0xCADAC inside the game.rel file, more specifically, 0xCADC0 through 0xCAE87.
      I'm not completely sure if it was checking against a room ID, an area ID or some sort of internal cutscene ID format, since I couldn't really narrow down what that value was. Basically, what that set of checks was doing, is that it was checking a lot of IDs, and if one of those IDs matched, then the model for the Varia Suit (253) would load into the cutscenes with the Power Suit model (252) being the default one, and the ID checks being the only thing that told the game when to load Varia. The one opcode that loads Varia after getting a matching ID is the one found at 0xCAE8C.

    • Since I couldn't really figure out what the ID it was reading was precisely, I decided to instead ditch the entire decision tree found at that precise location, and instead change it to a custom one that checks for gear_struct_base. What this means is that I am now reading directly from the address that keeps track of which items the player has obtained throughout the game, with that address specifically being 0x80CA4E20 and 0x80CA4E28. 0x80CA4E28 is reliable later in the game, since the whole struct shifts at some point, and 0x80CA4E28 sets bit 0 when the player has obtained the Gravity feature in the game, with the value in my playthrough changing from 0x26 to 0x27. So that one was used to determine when Gravity is obtained in the original game, and therefore, check against it and load the correct model for the Gravity Suit (254) instead of the one for Varia Suit (253).

    • However, that's not the end of it, since adding that check alone completely got rid of the Power Suit loading for cutscenes, something that was already working in the original game. This confirmed to me that the original game loads the Power Suit model (252) by default, and the decision tree from before was telling the game exactly when to load the Varia Suit specifically depending on the checked ID. One more issue with this, when starting the game, the data for the Gravity suit is not reliable, since that one stays at a consistent 0x0A for some reason, and instead, the gear_struct_base address is found at 0x80CA4E20 until a certain point in the game. Not sure entirely when it changes, but it does. 0x80CA4E20 stays at a consistent value of 0x11 all the way throughout the start of the game, right up to the point when the player get the Varia Suit, so that is our second checking point, check for 0x80CA4E20 and its bit 0 in order to know when we have obtained the Varia Suit to load either Power Suit (252) or Varia Suit (253) for cutscenes.

    • The last missing piece to get this working 100% was the final cutscene of the game, the one where Samus returns to the Bottle Ship, when she enters the room where Adam's helmet is and deactivates her suit, so we get Zero Suit Samus in-game. The very start of this cutscene, when loaded directly from the Theater mode, for some reason has its gear struct changed from 0x80CA4E28 to 0x80CA4E20. And not only that, but the value at the start of the scene at 0x80CA4E20 is 0x15 now, and when the cutscene triggers, it changes to 0x1D. As a quick workaround for this, I made the custom routine check for 0x15 at 0x80CA4E20 as well, and if it did, then load the Gravity model (254) for it. I checked against other parts of the game, and no other part of the game had 0x15 in that specific address before that point in the game (post-game), so this can be considered safe. Interestingly enough, loading the last cutscene (dm65_02) sequentially from a previous entry in the Theater mode does NOT trigger that change in address, it's only when loading that cutscene directly that it does.
The cutscene models fix was without a doubt one of the most technical and difficult things to achieve, but thankfully, it seems to be working now.​




With that, both of the last remaining issues for Other M Redux have finally been completed!
It was quite a ride, years to figure out just a couple of, what seems to be, minuscule things to find, but the lack of interest from the hacking community towards Other M surely made this difficult to accomplish.
An Other M Decompilation project cannot come soon enough, I'd love to see one come to fruition and get an eventual PC port out of the game, but unfortunately, there's not even one started decompilation project for Other M, so sadly, that would still be years off from becoming a reality.

However, I hope that my Other M Redux project brings more replayability and a more friendly way to enjoy the game, without many of the weird story-driven aspects that detracted from the experience.

I think the one final thing still missing is one custom cutscene is still missing a Gravity Suit colouring mask, but that one is very minimal, and can only be seen for like 2-3 seconds tops. I'll tackle it next and that should be it 100% for this project! :D
 

Site & Scene News

Popular threads in this forum