MZM Random Randomizer GBA

From GameBrew
MZMR+
Mzmrr2.png
General
AuthorCaptain Glitch
TypeHack Utilities
Version1.2
LicenseMixed
Last Updated2023/10/24
Links
Download
Website


Metroid Zero Mission Randomizer (MZMR+) is a program initially created by biospark that allows you to randomize various aspects of Metroid Zero Mission, primarily item locations.

It has been expanded by Caption Glitch to include some additional options. It can randomize palettes, enemies, enemy stats, text, and music. It is only compatible with the North American (U) version of the game.

The program can also randomize certain ROM hacks. As of right now, the supported hacks include: Deep Freeze (logic by Captain Glitch) and Spooky Mission (logic by Captain Glitch and Conner). Certain options are disabled when randomizing hacks.

Features

  • Item randomizer.
  • Enabling custom music (Credit to JRP and Xl for the tracks).
  • Randomizing enemy drops.
  • Randomizing enemy weaknesses.
  • Randomizing enemy damage.
  • Randomizing enemy health.
  • Specific options for Text Randomization.

User guide

Open an unmodified ROM of Metroid Zero Mission. ROMs that have been previously randomized are not usable.

Once the ROM is open, choose from various randomization settings. Each setting comes with tooltips explaining their functions.

Settings can be reused by saving them to a file, or you can load them from a string (found post-randomization or in a log file).

You can specify a seed for randomization (a number between 0 and 2147483647) or leave it blank for a random seed.

Click the gear icon for application settings, enabling time-saving options. Options include loading the previous ROM, saving log files, and map images.

Items

Randomize abilities, tanks, or both, including the removal of up to 90 items (those are marked as collected on the minimap).

"Game Completion" setting imposes location restrictions:

  • If "No logic" is selected, there are no restrictions. However, you will immediately get stuck if Morph Ball is not the first item.
  • "Beatable" means enough items can be obtained to beat the game.
  • "100%" means that all items can be obtained.

There are two settings that remove item requirements, since they may be located somewhere inaccessible. One makes Metroids vulnerable to missiles when not frozen; the other makes black space pirates vulnerable to beams other than Plasma. Neither of these items is required elsewhere.

"No PBs before Chozodia" restricts Power Bomb locations, preventing early access and necessitating the Mother Brain fight.

"Chozo statue hints" make Chozo statues reveal item locations. Leave unselected for no hints.

Locations

You can specify actions for items at each location. Default includes every item in the randomization pool.

Choose to leave it random, remove the item, or set it to a specific one.

Detailed list of locations and their original items is provided in the readme.

Palettes

Randomize tilesets, enemies, Samus, and beams' colors by changing the hue.

You can specify a hue rotation range between 0-180 degrees.

For each palette, the hue is randomly rotated clockwise or counter-clockwise by a random amount within the range.

Text

You can randomize various in-game text from files in the Text folder.

To create custom strings, simply edit one of the files. Refer to the readme for formatting.

Music

Randomize room and boss music; enable custom music (Credit: JRP and Xl).

"No Logic" assigns any valid track randomly; "With own pool" ensures that each song is replaced with only one other song.

Stats

Randomize enemy stats (health, damage, drop stats) based on defined percentage ranges.

Drop stats are randomized for enemies to give them different drop values than they normally would.

Certain enemies are excluded from specific stat changes to prevent softlocks.

Misc

There are varies options that affect gameplay. The "Obtain unknown items" is taken into account by the "Game Completion" setting.

There's an option to randomize enemies, but it's somewhat limited for now.

There is an option to randomize bosses from a pool. Those bosses are affected by stat and palette randomization.

Boss health is scaled based on which location the boss is chosen to reside in.

Screenshots

mzmrr3.pngmzmrr4.png

mzmrr5.pngmzmrr6.pngmzmrr7.png

mzmrr8.pngmzmrr9.pngmzmrr10.png

Known issues

(v1.2) There are still issues with the .exe being flagged as malware.

Changelog

V 1.2

  • Merged MZMR 1.5 version with MZMRR, renamed to MZMR+.
  • Added option to randomize Metroid: Deep Freeze and Spooky Mission ROM hacks.
  • Removed "Misc 2" tab, replaced with "Enemies" tab.
  • Changed text rando to read from file to allow for user input.
  • Modified text rando code to auto format strings based on bracketed expressions and length.
  • Added Mega Core X to boss rando.
  • B.O.X.'s body, Yakuza's head, and most of Nightmare now blocks plasma beam pierce. Adds difficulty though can cause some lag as a result.
  • Serris will only splash if it touches a liquid.
  • Fixed Nightmare Body Damage

V 1.1

  • Added boss randomization.
  • Optimized freespace usage in rom.
  • Added additional text strings.
  • Adjusted vulnerability randomization to make beam weakness more likely.
  • Adjusted music randomizer to account for custom bosses.
  • Changed program title.
  • General code cleanup.

V 0.5

  • Recoded program to use some more acceptable practices and made some optimizations.
  • Tweaked enemy randomization. (Needs to be tweaked once more to remove some unused refill bugs that don't work properly.)
  • Added a couple more strings to difficulty names, item descriptions, and prefixes.
  • Added randomization for most boss music triggers and a couple other situations.
  • Added new music randomization options: Structured and Dumb.
    • Structured will randomize music more logically. Boss themes will not be used for room music and vice versa. (with the exception of MB theme.)
    • Dumb will randomize everything without any restrictions. This means literally every room will likely have a different theme. You were warned.

V 0.4

  • Changed a few things in the code that were bad.
  • Added a couple extra text pools for things like "capacity increased" and "acquired" messages.
  • Made tank pickup messages one name rather than two.
  • Added spriteset randomization.
    • Randomizes 0x69 of the games spritesets (nearly all vanilla sets).
    • Enemies are placed in groups. Each enemy in a group can only be replaced with certain enemies.
    • Bosses and specific enemies are exluded from being changed.

V 0.3

  • Fixed a crash caused by overwriting opened rom.
  • Added music randomization for rooms. Effects all rooms other than debug rooms in Chozodia.
  • Added more strings.

V 0.2

  • Optimized freespace searching a tad.
  • Increased various string pools a tad.
  • Output file no longer sticks around if randomization fails.
  • Fixed an issue where the seed could be larger than the max value.

V 0.1

  • Release.

External links

Advertising: