10 Resource Packs
SkyanUltra edited this page 2025-10-25 18:25:29 -04:00

Overview

Resource Packs are a way of replacing or extending assets in game, to customize the games appearance, sounds, animations and values in a variety of ways.

SMB1R Screenshot
A Super Mario World inspired resource pack made for SMB1R.

Resource packs are simple to setup once understood, and just require you to replace files contained within a folder, with anything inside that folder getting loaded in the place of the SMB1R's assets. Multiple resource packs to easily be loaded at once, making it easy to create modular packs meant to only change a few things, that people can mix and match with.

IMPORTANT: It is good practice to remove excess files from your resource packs if you aren't replacing them, as it makes your pack far more compatible with other resource packs and removes a large bulk of excess file space that is otherwise wasted! Simply delete the files you aren't changing from the resource pack folder, and it will no longer overwrite that file.


Installing Resource Packs

In order to install typical resource packs, do the following:

  • Do whatever you need to in order to extract the resource pack from where you downloaded it.
  • Go to the application data folder for Super Mario Bros. Remastered. The exact location will vary depending on your operating system. On Linux or macOS, the ~ in the path refers to the home directory.
    • Windows: %APPDATA%\SMB1R
    • Mac: ~/Library/Application Support/SMB1R
    • Linux: ~/SMB1R

    If you have portable mode enabled, the folders for your content should be present in the same folder as the executable for SMB1R itself.

  • Place the folder you extracted into your resource_packs folder.

If you followed these steps correctly, you should have successfully installed a resource pack! It can then be enabled by entering the Options menu, and searching for the Resource Packs sub-category where it can be toggled (and configurated by pressing Right over the pack, if applicable.)


File Structure

Resource packs are structured exactly the same as the Assets folder in the root folder of the source code. As such, you can simply use the source code's Assets folder as reference for where files need to be.

Alternatively (and far more conveniently,) the game includes a built-in button to automatically generate a base for a resource pack, which generates a basic skeleton for your resource pack in a folder named, including all of the in-game assets that can be edited in a folder titled new_pack.

Below is a full list describing the file structure of a typical resource pack.

Pack Data

Inside of the root of your resource pack (referred to here as ROOT,) you may include a few files which allow you to customize cosmetic and configurable details about your pack.

  • Pack Info (ROOT/pack_info.json) (REQUIRED!)
    • This file is an absolutely essential file which determines the packs name, description, and who its made by.
    • If this file isn't included, the resource pack will most likely NOT show up.
  • Icon (ROOT/icon.png)
    • This file determines the pack's icon to represent it in the resource packs menu. This file can either be a .png file, or a .gif file, which allows you to animate it.
    • Can be any size you want, but a size such as 16x16, 32x32 or 64x64 is recommended.
  • Configuration (ROOT/config.json)
    • This file is a customizable config file, which can be edited in game, allowing you to further customize how resource packs are used.
    • You can find additional information on this in the section for configuration.

Assets

SMB1R allows you to edit the large majority of its assets, which are found in certain folders. Below is just a basic list of some common places where you can find some of these sprites:

  • ROOT/Sprites/ is where all sprite data and JSON files are stored for sprites. Some important folders to mention include:
    • ROOT/Sprites/Enemies/ contains all data pertaining to enemies. Goombas, Koopas, Bloopers and even Bowser can all be found here and edited as needed.
    • ROOT/Sprites/Players/ contains all data pertaining to characters, and allows for you to edit them much the same way you would with a typical custom character, with each of the characters being stored in their own respectively named folders.
      • NPCs are included in the root of this folder as well, such as Toad and Peach.
      • Custom characters can also be edited, however their data is stored in an additional folder, being found in a folder with the same name as theirs in ROOT/Sprites/Players/CustomCharacters/.
    • ROOT/Sprites/Tilesets/ contains the large majority of basic level terrain, decoration, and objects, each found in their own respective folders. (Such as /Tilesets/ and /Deco/.)
  • ROOT/Audio/ is where all your music and sound effects go, sorted into two categories:
    • ROOT/Audio/BGM/ contains background music, such as menu themes, level themes and some jingles such as the game over jingle.
    • ROOT/Audio/SFX/ contains all sound effects, such as Mario's jump, the sound of picking up coins, and stomping on enemies.

IMPORTANT: It is very important to note that if you are planning to change the font used in your resource pack, that you include ALL font files. This includes Font.png, FontGA.png and FontJP.png, as they're all needed for the game's .fnt file to load correctly. Otherwise, you will end up with bugged behavior.

JSON Files

JSON files are the way that the game stores sprite animations alongside various properties and variations based on the game state. If you are just creating simple texture replacements, these require 0 changes and can be left as they are.

Through editing these files though, you can achieve several different things, such as:

  • Add in extra variations, depending on game state.
  • Tweak and add new animations for entities to use, allowing for more detailed and expressive animations.
  • Edit in-game values, allowing you to tweak entity sprite behavior and even certain properties of their behavior.

To learn about how to edit these files, check the page on the JSON Format.

NOTE: It is highly recommended that you have a basic understanding of the JSON format. If you'd like to learn about JSON files and how they work, we recommend this guide. This page will cover some basics, but it will only serve to give you basic examples of what to do. It is also recommended you check the variation keys which you can use, which will give you a better idea of what you can do to modify your character based on the states available.


Configuration

Resource packs are able to support configuration files, which allow the creator to set options up which can be edited by the user to use different settings. This opens the door for loads of customization, which can allow all sorts of things from toggleable elements to swappable character skins.

To create a config file for your resource pack, create a file named config.json in the root of your resource pack, like so:

Config File Demonstration
A demonstration for where config.json is meant to go.

Once you've done that, you will then need to set up your configuration options and the value keys that can be selected for them. Below is an example on how to format your config.json file:

{
	"options": {
		"Config Option 1": "Foo",
		"Config Option 2": "So",
		"Config Option 3": "On!"
	},
	"value_keys": {
		"Config Option 1": [
			"Foo",
			"Bar"
		],
		"Config Option 2": [
			"So",
			"Many",
			"Options",
			"Wow"
		],
		"Config Option 3": [
			"On!",
			"You can make them long...",
			"... just and they'll expand to compensate."
		]
	}
}

Your options and their current values are sorted under the options key, where they will determine what options you can choose between. Below that, the value_keys key determines what values these options can be in an array of options that you can define.

Once implemented, you can then use these configuration options as variation keys, such as config:Config Option 1. You can read more about how to utilize them here.