New Super Mario Randomizer Wii
Config.json Documentation

Content

  1. Introduction
  2. Format
  3. "Seed" Section
  4. "Reduce Lag" Section
  5. "Entrance Randomisation" Section
  6. "Skip level" Section
  7. "Enemies" Section
  8. "Enemy Variation" Section
  9. "Level Group" Section
  10. "Tile Group" Section

Last updated 03/12/2023 (DD/MM/YYYY)

Introduction

The config.json file foe New Super Mario Randomizer Wii (NSMRW) is used to read randomization preference. It is usually stored in the same folder as the NSMRW Source code.


Format

The config file consists of 2 parts: Skip Level and Enemies.
The format should be structured as below:

                    
{ "Seed":"", "Reduce Lag":True|False, "Entrance Randomization":True|False, "Skip":[], "Enemies":[], "Enemy Variation":{}, "Level Group":[], "Tile Group":[] }


"Seed" Section

"Seed": Integer | String

The seed that will be used or randomization. Same seed will always yield same randomization result.

Parameter:
Integer | String The seed to be used. Can be either a String or a 32-bit Integer
Example 1:
"Seed":523814998

Example 2:
"Seed":"NSMRW"

"Reduce Lag" Section

"Reduce Lag": Boolean

Determine if the randomizer should delete sprites to improve performance.

Parameter:
Boolean Will the randomizer delete sprites to reduce lag. Value should be True or False
Example 1:
"Reduce Lag":true

Example 2:
"Reduce Lag":false

"Entrance Randomisation" Section (Optional) [EXPERMENTIAL]

"Entrance Randomisation": Boolean

Determine if the randomizer should randomise wrap pipe / door exits and level spawn

NOTE: This feature is in experimental. It may create unbeatable levels or inaccessible areas.

Parameter:
Boolean Will the randomiser randomise Entrances. Value should be True or False
Default: False
Example 1:
"Entrance Randomisation":true

Example 2:
"Entrance Randomisation":false

"Skip Level" Section

"Skip": Array

A list of levels that will be skipped during randomization. Can be useful if some levels prevents progress.

Parameter:
Array A list of file names of the levels to not be randomized (Skipped)
NOTE: "Texture" should ALWAYS be included in the list to avoid errors when using the program (unless the "Texture" folder is not included in the "Stage" folder. In this case, DO NOT include "Texture" in the list.)

Example:
"Skip Level":["Texture","01-26.arc","01-27.arc","01-28.arc","01-29.arc","01-36.arc","01-40.arc","01-41.arc","01-42.arc","02-36.arc","02-24.arc","02-26.arc","02-27.arc","02-28.arc","03-26.arc"]

"Enemies" Section

"Enemies": [Array]

Lists of enemies to be randomized.
That is, the enemies in the list will be randomized to another enemy in the same list.
Enemies outside of the list will not be randomized.
The Array is a multi-dimentional array. Enemies can be grouped in an array, therefore forming a randomization group.
Enemies in the same group will only be randomized and changed to another enemy in the same group.

Parameter:
[Array] Arrays of array of sprite IDs to be randomized.
Each array will be classified as 1 group, and will randomize only within the group.
Note: Items can be included in multiple groups, and can be repeated within the group. The number of repeats decides the weight of that item in the respective group.
The order of the groups will also affects the randomization effects. If the item is randomized once, it will be randomized with the latter group once more.
Example:
"Enemies":[
    [20,21,200,199,170],
    [57,58,80,94,95,308,272,120],
    [20,57,24,25]
]

"Enemy Variartion" Section

"Enemy Variation": {ID : enemyVariation, ID : enemyVariation, ...}

Lists of enemy variation to be randomized.
That is, the enemies in the json list will be randomized to another form in the list.
Enemies outside of the list will not be randomized.

Parameter:
ID String sprite IDs to be randomized.
Due to limitations, The field ONLY accepts STRING.
enemyVariation Array of String "Raw Data" of the enemy variation in hex(but wrapped by quotation ("")).
The data can be found via the Sprite Properties window in the Reggie! level editor. ("Modify Raw Data" Section)
Note: Items can be repeated within the group. The number of repeats decides the weight of that item in the respective group.
Example:
"Enemy Variation":{
    "57":[
        "0000 2000 0010",
        "0000 0000 0000",
        "0000 0000 0001"
    ],
    "54":[
        "0000 0000 0002",
        "0000 0000 0100",
        "0000 0000 0000",
        "0000 0000 0102"
    ]
},

"Level Group" Section (Optional)

"Level Group": [Array]

Lists of grouped levels to be randomized.
Like how enemy group works, the levels in the group will be changed to another level in the list.
Levels not included in the groups will be randomized with other ungrouped levels.
To NOT randomize a group of level, use "Skip level".

Parameter:
[Array] Arrays of array of file names to be randomized.
Each array will be classified as 1 group, and will randomize only within the group.
Note: Items can be included in multiple groups, but CANNOT be repeated within the group. Attempt to include repeats will results in Error.
The order of the groups will also affects the randomization effects. If the item is randomized once, it will be randomized with the latter group once more.
Example:

"Tile Group" Section (Optional)

"Tile Group": [Array]

Lists of grouped tile object ID to be randomized.
Each array will be classified as 1 group, and will randomize only within the group.

Parameter:
[Array] Arrays of array of tile object IDs to be randomized.
Each array will be classified as 1 group, and will randomize only within the group.
Note: Items can be included in multiple groups, and can be repeated within the group. The number of repeats decides the weight of that item in the respective group.
The order of the groups will also affects the randomization effects. If the item is randomized once, it will be randomized with the latter group once more.
Example:
"Tile Group":[[39,40,41,44,45,46,47,48],[29,30,31,33,34,35,36,37]]