Hacking ROM Hack Miitopia Randomizer

Kobazco

Well-Known Member
OP
Member
Joined
Jul 29, 2016
Messages
682
Trophies
0
Age
24
XP
1,577
Country
United States
Miitopia Randomizer v1.0.0 (Switch & 3DS)

Thread copy pasted from the tool's GitHub which can be found here: https://github.com/Kobazco/Miitopia_Randomizer
^^^ Also has download link

gui1.png


Screenshots:
2022022617265200-BE69DF9FDF680F1A7049C2306C81C12E.jpg
2022022618052400-BE69DF9FDF680F1A7049C2306C81C12E.jpg
b9c331fa70f601a94507679335631bae.png
2022022618091400-BE69DF9FDF680F1A7049C2306C81C12E.jpg
2022022417315500-BE69DF9FDF680F1A7049C2306C81C12E.jpg
2022022602163700-BE69DF9FDF680F1A7049C2306C81C12E.jpg
2022022618071100-BE69DF9FDF680F1A7049C2306C81C12E.jpg

Requirements
- A modded switch/3DS or emulator (Ryujinx is suggested due to Mii Maker support, Citra for 3DS)
- A Miitopia romfs dump (We cannot legally provide this)
- Knowledge of how to install mods on cfw or your emulator of choice

Usage
  1. Download the latest release and extract the zip file
  2. Copy your 'cmn' folder from your romfs into Input/romfs/
  3. Run either the GUI or the CLI
  4. Select the options you want
  5. Copy the 'romfs' folder from the output directory into your mod location and overwrite all files if prompted

Note
The fight against the Mini Slime as well as the first area afterwards are not randomized in order to avoid softlocking.
Randomization of enemies/stages begins in the first area unlocked after getting Inn access.

Options

GUI


When hovering over an option in the GUI, a tooltip will appear explaining the option

CLI
Code:
usage: MiitopiaRandomizer_cli [-h] [--battles] [--jobs] [--treasure] [--npcs] [--seed SEED]

Miitopia Randomizer

options:
  -h, --help            show this help message and exit

  --battles, -B         Randomizes every battle in every stage (except for the first 2).
                        Music, background (if possible) and enemies are randomized.
                        Enemies are randomized based on their strength:
                        As an example, Rock Moths can be replaced with similarly weak enemies such as a Pom or Mouthy Tomato.

  --jobs, -J            Randomizes the world in which Jobs are unlocked. Also randomizes the look of what weapon a Job uses.

  --treasure, -T        Randomizes the contents of all Treasure Chests.

  --npcs, -N            Randomizes the NPCs models, as well as what enemy the Dark Lord is.

  --seed SEED, -S SEED  Specifies a seed to use for the randomization.
                        Useful if you want to play the same game with/against someone else

Building executables yourself
You will need a recent version of Python (ideally 3.10)
  1. Clone the repository
  2. Run `package_release.bat` or `package_release.sh`
  3. Once the script is done, the executables and any required files will be in the `Release/` folder

Mod Location/Folder
- For Atmosphere cfw users, this is `atmosphere/contents/01003DA010E8A000/` Place the romfs folder here
- For emulator users, both Ryujinx and Yuzu you can just right click the game and select "view mod location" and place the romfs folder there.


Credits
- @Connicpu for an incredible amount of assistance and teaching me how to use python. Definitely would not have been in a usable state like this without her.
- Sarc python reader and writer by @leoetlino and @BravelyPeculiar https://github.com/zeldamods/sarc
- @CommandMC for refactoring the entire project.
 
Last edited by Kobazco,

carrotee123

Member
Newcomer
Joined
Mar 1, 2022
Messages
5
Trophies
0
Age
25
Location
space
XP
27
Country
United States
no such file directory enemyStatus.csv
even though its in the master file why does it keep failing
actually each option fails and guess what the files are in their directories
 

Kobazco

Well-Known Member
OP
Member
Joined
Jul 29, 2016
Messages
682
Trophies
0
Age
24
XP
1,577
Country
United States
no such file directory enemyStatus.csv
even though its in the master file why does it keep failing
actually each option fails and guess what the files are in their directories
Make sure you are actually in the directory before running it with python, rather than doing python entire directory main.py

So CD to the folder first, then run main.py if you're doing it via cmd.

If its for the .sarc files, then you didn't place them correctly.
 

carrotee123

Member
Newcomer
Joined
Mar 1, 2022
Messages
5
Trophies
0
Age
25
Location
space
XP
27
Country
United States
Make sure you are actually in the directory before running it with python, rather than doing python entire directory main.py

So CD to the folder first, then run main.py if you're doing it via cmd.

If its for the .sarc files, then you didn't place them correctly.
i just dragged the mian.py to my cmd after i installed all the pips and chose an option does that work cause it brings up the options and everything but one of the files cant be located even though its in the same directory that the cmd is running it from
 

carrotee123

Member
Newcomer
Joined
Mar 1, 2022
Messages
5
Trophies
0
Age
25
Location
space
XP
27
Country
United States
Make sure you are actually in the directory before running it with python, rather than doing python entire directory main.py

So CD to the folder first, then run main.py if you're doing it via cmd.

If its for the .sarc files, then you didn't place them correctly.
here's the log one file always fails to locate for each option

Traceback (most recent call last):
File "G:\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "G:\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "G:\Scripts\sarc.exe\__main__.py", line 7, in <module>
File "G:\lib\site-packages\sarc\__main__.py", line 222, in main
args.func(args)
File "G:\lib\site-packages\sarc\__main__.py", line 207, in <lambda>
u_parser.set_defaults(func=lambda a: sarc_create_or_update(a, update=True))
File "G:\lib\site-packages\sarc\__main__.py", line 80, in sarc_create_or_update
with open(dest_file, 'rb') as original_sarc_file:
FileNotFoundError: [Errno 2] No such file or directory: 'Output/romfs/cmn/param/enemy.sarc'
Traceback (most recent call last):
File "G:\Miitopia_Randomizer-master\main.py", line 86, in <module>
main()
File "G:\Miitopia_Randomizer-master\main.py", line 41, in main
import stageEnemy
File "G:\Miitopia_Randomizer-master\stageEnemy.py", line 52, in <module>
with open('enemyStatus.csv') as csv_file:
FileNotFoundError: [Errno 2] No such file or directory: 'enemyStatus.csv'
 

Kobazco

Well-Known Member
OP
Member
Joined
Jul 29, 2016
Messages
682
Trophies
0
Age
24
XP
1,577
Country
United States
i just dragged the mian.py to my cmd after i installed all the pips and chose an option does that work cause it brings up the options and everything but one of the files cant be located even though its in the same directory that the cmd is running it from
That's the thing, you're not going to the directory first through that method. You have to go to the directory through the CD command and then run it via cmd with something like python main.py

The issue is exactly what I was saying it was, you're not navigating to the directory first.
 

carrotee123

Member
Newcomer
Joined
Mar 1, 2022
Messages
5
Trophies
0
Age
25
Location
space
XP
27
Country
United States
That's the thing, you're not going to the directory first through that method. You have to go to the directory through the CD command and then run it via cmd with something like python main.py

The issue is exactly what I was saying it was, you're not navigating to the directory first.
ok after alot of trouble shooting i uninstalled everything installed it to the cmds command location everything including pyhton is in the same place i installed all the sarcs and pips and now im getting this error when i try randomizing what file am i missing now

Traceback (most recent call last):
File "C:\Users\pc\main.py", line 86, in <module>
main()
File "C:\Users\pc\main.py", line 41, in main
import stageEnemy
File "C:\Users\pc\stageEnemy.py", line 33, in <module>
dsmode()
File "C:\Users\pc\stageEnemy.py", line 26, in dsmode
subprocess.run(["sarc", "update", "Input/Enemy/enemyFaceConfig.csv", "Output/romfs/cmn/param/enemy.sarc",
File "C:\Users\pc\lib\subprocess.py", line 501, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Users\pc\lib\subprocess.py", line 966, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\pc\lib\subprocess.py", line 1435, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
 

Kobazco

Well-Known Member
OP
Member
Joined
Jul 29, 2016
Messages
682
Trophies
0
Age
24
XP
1,577
Country
United States
ok after alot of trouble shooting i uninstalled everything installed it to the cmds command location everything including pyhton is in the same place i installed all the sarcs and pips and now im getting this error when i try randomizing what file am i missing now

Traceback (most recent call last):
File "C:\Users\pc\main.py", line 86, in <module>
main()
File "C:\Users\pc\main.py", line 41, in main
import stageEnemy
File "C:\Users\pc\stageEnemy.py", line 33, in <module>
dsmode()
File "C:\Users\pc\stageEnemy.py", line 26, in dsmode
subprocess.run(["sarc", "update", "Input/Enemy/enemyFaceConfig.csv", "Output/romfs/cmn/param/enemy.sarc",
File "C:\Users\pc\lib\subprocess.py", line 501, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Users\pc\lib\subprocess.py", line 966, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\pc\lib\subprocess.py", line 1435, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
I swear you're not listening to my instructions at all. You didn't need to install it to a specific location, you didn't have to do any of that. I'm like 90% certain its still erroring because you did that. Literally all you need to do is navigate in the cmd to the place where you extracted the randomizer. I can't help you, as I don't know what your file structure and stuff looks like, and very very clearly you haven't been reading a single thing I have been saying to try and help you.

But at the same time, I swear python just doesn't wanna work for half the people who download this, so I'm sorry if its just because of that. The only thing I could possibly think of in that case is it not being able to access the files due to some sort of permission issue, in which case some sort of running through administrator might work.
 

carrotee123

Member
Newcomer
Joined
Mar 1, 2022
Messages
5
Trophies
0
Age
25
Location
space
XP
27
Country
United States
I swear you're not listening to my instructions at all. You didn't need to install it to a specific location, you didn't have to do any of that. I'm like 90% certain its still erroring because you did that. Literally all you need to do is navigate in the cmd to the place where you extracted the randomizer. I can't help you, as I don't know what your file structure and stuff looks like, and very very clearly you haven't been reading a single thing I have been saying to try and help you.

But at the same time, I swear python just doesn't wanna work for half the people who download this, so I'm sorry if its just because of that. The only thing I could possibly think of in that case is it not being able to access the files due to some sort of permission issue, in which case some sort of running through administrator might work.
thx for your help anyway and yes i did cd it to the exact location of the randomizer still gives the same error python probably just isnt working idk i give up because if i fix this another issue is probably just gonna come uo but hx for bieng patient and trying to help
 
  • Like
Reactions: Kobazco

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • LeoTCK @ LeoTCK:
    but yea...I still enjoyed the final game... no i mean the demo might not have had them given it was demo but it did
  • LeoTCK @ LeoTCK:
    there were still some metroid like enemies in the final, like those leeches or what they were
  • LeoTCK @ LeoTCK:
    either way the story got changed a bit but still, you can progress in singleplayer in not strictly a linear way at some point you can pick a planet to go to first after the initial stuff...and it can be challenging...theres also a bad ending and a good ending with the second final boss fight
  • LeoTCK @ LeoTCK:
    i like that its more action based and yet allows you more freedom than some of the later metroid games
  • LeoTCK @ LeoTCK:
    I think overall my personal favorites are the original gameboy metroid 2 and metroid hunters, thouh i havent played hunters for about a decade
  • LeoTCK @ LeoTCK:
    but still, what i played was great
  • Xdqwerty @ Xdqwerty:
    I also played other ds fps games like the call of duty ds games and goldeneye rogue agent
  • LeoTCK @ LeoTCK:
    and im also convinced that it uses a heavily modified unreal engine that got changed...you see there was a cancelled nintendo 64 DD port of Unreal (due to N64DD not coming out) that was based on an alpha/beta version of Unreal but re-written almost completely
  • LeoTCK @ LeoTCK:
    if you change the display mode it has some of the same graphical glitches like Unreal 0.83 had for example and I saw editor screenshots from one of the level designers
  • LeoTCK @ LeoTCK:
    it looked to me like a heavily changed unreal editor
  • LeoTCK @ LeoTCK:
    also it had some models for "mover" this and that and that is something Unreal uses for terminology
  • LeoTCK @ LeoTCK:
    I talked to this developer and when I revealed that, he stopped talking
  • Xdqwerty @ Xdqwerty:
    mhm
  • LeoTCK @ LeoTCK:
    probably because the engine got obtained via not a direct route and I suppose they didn't have a direct deal with epic and it was significatnly changed anyways
  • LeoTCK @ LeoTCK:
    but I saw what I saw lol. it seems to be still based on it just like proper metroid prime seems to be based on unreal warfare to some degree, the physics of the water are almost identical and other things
  • LeoTCK @ LeoTCK:
    even if it became an "additive world" that actually was the default state of things in unreal until they changed it, and its still possible to hack it in any version of the game to not use subtractive model
  • Xdqwerty @ Xdqwerty:
    additive world?
  • LeoTCK @ LeoTCK:
    so yea i believe the routes point to the cancelled n64dd port of Unreal and whatever deal was left out of that, it was developed by the lemmings guy, DMA, well more like the branch that also developed hired guns(the cancelled ue remake), they got renamed to devils thumb iirc?
  • LeoTCK @ LeoTCK:
    yea...as in the world is additive..its all void and you have to place something in it to start..where subtractive world is filled with mass, with one giant "cube" that is a mass and you have to cut something out of it
  • LeoTCK @ LeoTCK:
    that's how making levels for unreal work typically...but until version 0.84 it was additive by default
  • LeoTCK @ LeoTCK:
    its still all constructive geometry though
  • LeoTCK @ LeoTCK:
    but yea..a lot of people have misconception how it really works with Unreal, they thought it was only subtractive but its not and the fan 227 patch shows that and allows you to choose between the two modes by making "new" map or "new additive" map
  • Xdqwerty @ Xdqwerty:
    okay
  • LeoTCK @ LeoTCK:
    it just does some magic with the bytes and makes it a void by default in one case where you have to add objects into literal void space and subtractive where you cut out shapes as everything is filled up by one giant cube in practice
  • LeoTCK @ LeoTCK:
    so the subtractive model is actually a lie, the true default is additive
    LeoTCK @ LeoTCK: so the subtractive model is actually a lie, the true default is additive