|
8 | 8 | </a>
|
9 | 9 | </p>
|
10 | 10 |
|
11 |
| - |
12 | 11 | # Super Mario 64 ROM Randomizer Generator
|
13 | 12 |
|
14 | 13 | This is a work in progress project to build an [OoT-Randomizer](https://www.ootrandomizer.com/)-style randomizer for Super Mario 64, that is highly configurable but easy to use.
|
15 | 14 |
|
16 | 15 | # Features
|
17 | 16 |
|
18 | 17 | - Works on all endianess' (`.z64`, `.n64`, `.v64`) and all regions (America, Europe, China, Japan, Japan Shindou).
|
19 |
| -- Works on ROMhacks (**Please note:** Romhacks can be vastly different. Please contact us in the discord if you have any trouble.) |
20 |
| -- Randomizes Level Entries - Every Level will be a different one |
21 |
| -- Randomizes Castle Paintings - To visually match the entrance of the level it now leads to. |
| 18 | +- Randomizes level entries - Every level will be a different one |
| 19 | +- Randomizes Castle paintings - To visually match the entrance of the level it now leads to. |
22 | 20 | - _New_: Levels without a castle painting will show a painting visually matching the original style, by the talented [Mika](https://not-very-artistic.tumblr.com/)
|
23 | 21 | - Byte alignment for running on real hardware. Default is `8`
|
24 |
| -- Randomizes Dialog |
25 |
| -- Randomizes Music |
26 |
| -- Randomizes Mario's Outfit |
27 |
| -- Randomizes Coin Colors |
28 |
| -- Randomizes Objects in Level |
29 |
| -- Randomizes Musical Instruments |
30 |
| -- Randomizes Skybox |
31 |
| -- Disables Cutscenes |
32 |
| -- Disables Level Intros |
33 |
| -- ~~Disable Keydoors~~ (Currently disabled) |
| 22 | +- Randomizes dialog |
| 23 | +- Randomizes music |
| 24 | +- Randomizes mario's outfit |
| 25 | +- Randomizes coin colors |
| 26 | +- Randomizes objects in level |
| 27 | +- Randomizes musical instruments |
| 28 | +- Randomizes skybox |
| 29 | +- Disables cutscenes and level intros |
34 | 30 | - ...many more to come
|
35 | 31 |
|
| 32 | +This program theoretically works on romhacks. I don't have the time to create and maintain configurations for romhacks. If you have experience and want to contribute, please ping me and I will try and help you out. |
36 | 33 |
|
37 | 34 | The application is supported on everdrive. To ensure everdrive compatibility, please change the name to a shorter one, as that seems to cause issues. For further help, please visit the Discord Server.
|
38 | 35 |
|
39 |
| - |
40 | 36 | Also auto extends ROM to work with the randomizer. If this fails, extend your ROM manually and use either [sm64extender](https://www.smwcentral.net/?p=viewthread&t=77343) or [Super Mario 64 ROM Extender](http://qubedstudios.rustedlogic.net/Mario64Tools.htm).
|
41 | 37 |
|
42 | 38 | # Web
|
| 39 | + |
43 | 40 | For extremely simple usage, simply use our existing web generator, found here: https://andrelikesdogs.github.io/sm64-randomizer/
|
44 | 41 |
|
45 | 42 | 
|
46 | 43 |
|
47 | 44 | ### Usage
|
| 45 | + |
48 | 46 | Follow instructions on the website. Upload your original SM64 rom, select the settings and press "Queue for generation" you'll quickly receive your randomized ROM.
|
49 | 47 |
|
50 | 48 | # GUI
|
| 49 | + |
51 | 50 | The randomizer includes a simple GUI for easy setup without any knowledge about the command line. Simply download the latest [release](/releases/latest) and open `SM64 Randomizer GUI`.
|
52 | 51 |
|
53 | 52 | 
|
54 | 53 |
|
55 | 54 | ### Install
|
| 55 | + |
56 | 56 | 1. Download the [latest release](/releases/latest)
|
57 | 57 | 2. Extract **all files** in a folder of your liking
|
58 | 58 | 3. Run SM64 Randomizer Generator.exe
|
59 | 59 |
|
60 | 60 | ### Usage
|
| 61 | + |
61 | 62 | 1. Select an Input ROM
|
62 | 63 | 2. Select an Output (will be automatically determined to <rom-name>.out.<file-extension>)
|
63 | 64 | 3. Select your settings
|
| 65 | + |
64 | 66 | - Choose a custom seed to share with friends who use the same tool
|
65 | 67 | - Copy the settings string to copy your current settings to share with friends. Does not include seed.
|
| 68 | + |
66 | 69 | 4. Press "Generate"
|
67 | 70 | 5. Run output file on your emulator/console. :tada:
|
68 | 71 |
|
69 | 72 | # CLI
|
70 |
| -For expert users who want to tinker with configurations, settings and test various roms, it's easier to use the program in CLI mode. To do this, run the application with additional arguments, and it will automatically work as a terminal tool. (For server owners: No graphical interface is required, if more than one argument is given.) |
| 73 | + |
| 74 | +For expert users who want to tinker with configurations, settings and test various roms, it's easier to use the program in CLI mode. To do this, run the application with additional arguments, and it will automatically work as a terminal tool. |
71 | 75 |
|
72 | 76 | ### Install
|
| 77 | + |
73 | 78 | 1. Download the [latest release](/releases/latest)
|
74 | 79 | 2. Extract **all files** in a folder of your liking
|
75 | 80 | 3. Run SM64 Randomizer Generator.exe in your terminal
|
76 | 81 |
|
77 | 82 | ### Usage
|
| 83 | + |
78 | 84 | ```
|
79 | 85 | python main.py ./Super_Mario_64_(U)_[!].z64 --shuffle-levels --shuffle-mario-color --shuffle-paintings match --seed 123
|
80 | 86 | ```
|
81 | 87 |
|
82 |
| -_Note: Works on all versions of the game, as well as **ROM Hacks** (with some tweaking, contact us in [Discord](https://discord.gg/2ZYfhcB) for help)_ |
| 88 | +_Note: Works on all regions of the original SM64_ |
83 | 89 |
|
84 | 90 | Output will be a file with the same name, ending in `.out.z64`. Run this on your emulator/console.
|
85 | 91 |
|
86 | 92 | ```
|
87 |
| - Super Mario 64 Randomizer (Version: 0.8.0) |
88 |
| -
|
89 |
| -usage: main.py [-h] [--no-extend] [--alignment ALIGNMENT] [--out OUT] |
90 |
| - [--version] [--seed SEED] |
91 |
| - [--shuffle-paintings {vanilla,match,replace-unknown,random}] |
92 |
| - [--custom-painting-author {disable,mika}] [--shuffle-skybox] |
93 |
| - [--shuffle-entries] [--shuffle-mario-outfit] [--shuffle-music] |
94 |
| - [--shuffle-objects] [--shuffle-colors] [--shuffle-text] |
95 |
| - [--disable-cutscenes] [--disable-starwarp] |
96 |
| - [--stardoor-requirements {vanilla,random,open}] |
97 |
| - [--keydoor-requirements {vanilla,open}] [--shuffle-instruments] |
| 93 | + Super Mario 64 Randomizer (Version: 0.10.1) |
| 94 | +
|
| 95 | +usage: main.py [-h] [--no-extend] [--alignment ALIGNMENT] [--out OUT] [--version] [--seed SEED] [--shuffle-paintings {vanilla,match,replace-unknown,random}] [--custom-painting-author {disable,mika}] [--shuffle-skybox] [--shuffle-entries] |
| 96 | + [--shuffle-mario-outfit] [--shuffle-music] [--shuffle-objects] [--shuffle-colors] [--shuffle-text] [--shuffle-instruments] [--disable-cutscenes] |
98 | 97 | rom
|
99 | 98 |
|
100 | 99 | positional arguments:
|
101 | 100 | rom
|
102 | 101 |
|
103 | 102 | optional arguments:
|
104 | 103 | -h, --help show this help message and exit
|
105 |
| - --no-extend disable auto-extend of ROM, which might fail on some |
106 |
| - systems |
| 104 | + --no-extend disable auto-extend of ROM, which might fail on some systems |
107 | 105 | --alignment ALIGNMENT
|
108 |
| - Specify the byte alignment. If you know this value, |
109 |
| - you have a higher change of successfully randomizing |
110 |
| - romhacks. |
| 106 | + Specify the byte alignment. If you know this value, you have a higher change of successfully randomizing romhacks. |
111 | 107 | --out OUT target of randomized rom
|
112 | 108 | --version show program's version number and exit
|
113 |
| - --seed SEED Allows you to play the same version as a friend, |
114 |
| - simply enter the same seed as them and you will be |
115 |
| - playing the exact same ROM. |
| 109 | + --seed SEED Allows you to play the same version as a friend, simply enter the same seed as them and you will be playing the exact same ROM. |
116 | 110 | --shuffle-paintings {vanilla,match,replace-unknown,random}
|
117 |
| - Change the behaviour of how the paintings in the |
118 |
| - castle are shuffled ("match" - matches randomized |
119 |
| - levels, i.e. painting = level, "random" - |
120 |
| - independently randomize paintings, "off" - leave |
121 |
| - paintings untouched) |
| 111 | + Change the behaviour of how the paintings in the castle are shuffled ("match" - matches randomized levels, i.e. painting = level, "random" - independently randomize paintings, "off" - leave paintings untouched) |
122 | 112 | --custom-painting-author {disable,mika}
|
123 |
| - This property allows changing the custom paintings to |
124 |
| - a different author, if you want to add your own, see |
125 |
| - the sm64.vanilla.yml |
126 |
| - --shuffle-skybox Randomizes the sky-texture between different levels. |
127 |
| - The black skybox is excluded. |
128 |
| - --shuffle-entries Shuffles the levelentries. When you enter a level, you |
129 |
| - will end up at a random one. |
| 113 | + This property allows changing the custom paintings to a different author, if you want to add your own, see the sm64.vanilla.yml |
| 114 | + --shuffle-skybox Randomizes the sky-texture between different levels. The black skybox is excluded. |
| 115 | + --shuffle-entries Shuffles the levelentries. When you enter a level, you will end up at a random one. |
130 | 116 | --shuffle-mario-outfit
|
131 | 117 | Randomizes parts of Marios Outfit.
|
132 | 118 | --shuffle-music Randomizes most songs in the game.
|
133 | 119 | --shuffle-objects Shuffles Objects in Levels
|
134 | 120 | --shuffle-colors Shuffle various colors in the game
|
135 |
| - --shuffle-text Shuffle Dialog text, for signs, npc dialog, level |
136 |
| - dialog and prompts. |
137 |
| - --disable-cutscenes Disables some of the games cutscenes. (Peach Intro, |
138 |
| - Lakitu Intro, Bowser-Text on Entry) |
139 |
| - --disable-starwarp Disables automatically leaving the level when you |
140 |
| - collect a star. This way, all stars act like a |
141 |
| - 100-Coin star or a Bowser 8-Reds Star |
142 |
| - --stardoor-requirements {vanilla,random,open} |
143 |
| - Changes how the doors to levels require different |
144 |
| - amounts of stars to be collected beforehand. Random |
145 |
| - means all doors require stars, but the amount will be |
146 |
| - random. Open simply means all doors are open from the |
147 |
| - start. |
148 |
| - --keydoor-requirements {vanilla,open} |
149 |
| - Changes how the locked keydoors in the castle work. |
150 |
| - Vanilla means you will require the usual keys from the |
151 |
| - Bowser fights. Open means they're simply open from the |
152 |
| - start. |
| 121 | + --shuffle-text Shuffle Dialog text, for signs, npc dialog, level dialog and prompts. |
153 | 122 | --shuffle-instruments
|
154 |
| - Shuffles instrument sounds around. Many different |
155 |
| - objects and songs use different instrument sets, as |
156 |
| - the N64 can't load all at once. This will shuffle them |
157 |
| - around. Might be wacky. |
| 123 | + Shuffles instrument sounds around. Many different objects and songs use different instrument sets, as the N64 can't load all at once. This will shuffle them around. Might be wacky. |
| 124 | + --disable-cutscenes Disables some of the games cutscenes. (Peach Intro, Lakitu Intro, Bowser-Text on Entry) |
158 | 125 | ```
|
159 | 126 |
|
160 | 127 | # Contributing: Getting Started
|
| 128 | + |
161 | 129 | To work on this repository, follow the following steps. Please also definitely join the [discord](https://discord.gg/2ZYfhcB) for help.
|
| 130 | + |
162 | 131 | 1. `git clone` this repository
|
163 | 132 | 2. Make sure you somehow have python >3.6 (Mac OSX I suggest `brew install`, Linux I suggest `apt install python3`, windows I suggest the installer)
|
164 | 133 | 3. Create a `venv` via `python3 -m venv .` while inside the folder
|
165 | 134 | 4. Install dependencies via `pip install -r requirements-dev.txt`
|
166 | 135 |
|
167 | 136 | # Special Thanks
|
| 137 | + |
168 | 138 | - [hack64](http://hack64.net/)'s wonderful SM64 hacking resources, clean, easy to use and great in-depth details
|
169 | 139 | - [SimpleFlips](https://www.youtube.com/user/SimpleFlips) Discord-Server for help with SM64 hacking/weirdness (especially Felegg)
|
170 | 140 | - Durkhaz for the amazing logo
|
|
0 commit comments