Starting in version 4.3, FFR supports loading resource packs. These are loaded with the "Import Resource Pack" button on the Presets tab.
A resource pack is a zip file containing various assets that the randomizer will load into the ROM. The currently supported assets are listed here. Every file is optional.
A fully worked example resource pack is "Dracula's Curse" used in the 2021 Halloween exhibition race: draculas_curse_ffr_resource_pack.zip.
Note: when providing custom graphics, they must be compatible with the technical limitations of the NES hardware. Each section will summarize the restrictions the apply to each specific kind of graphic import. For detailed discussion about the NES hardware, you can read about Pattern tables, Nametables, Attribute tables and Palettes.
When discussing graphics, "tiles" are squares on a 8x8 grid. "metatiles" are squares on a 16x16 grid. A "palette" is 3 colors + black.
The location backdrops displayed at the top of the battle screen. There are 16 locations. Each backdrop is 32x32 and they must be stacked vertically. In game, backdrops are logically split into two 16x32 columns, which are repeated across the top in a 1221 pattern. Backdrops can only use a single palette, but each backdrop can have a different palette.
The order of the locations is: Grass, Marsh Cave, Cave, Water, Forest, ToF, Desert, Marsh, Earth Cave, Castle, River, Tower, Sea Shrine, Ice Cave, Volcano, Waterfall.
The text displayed when crossing the bridge for the first time. Monospace ASCII text. Each page is 8 lines of 16 characters. Total text size should be no greater than 300 bytes.
Chaos battle graphic. Size is 112x96. You can use two palattes for Chaos, but you can only use one palette within any given metatile (16x16 grid square). At least 58 of the tiles must be empty (all black). |
Reference image for Chaos. |
NPC dialogue. Monospace ASCII text. There are 256 dialog entries. Format is dialog id in hexadecimal, followed by a dashed separator on the same line, followed by up to six lines of text with a maximum width of 24 characters. The total size of this file should be less than 1385 bytes. Example of Bikke's dialogue:
9 ---------------- Okay, you got me. Take my SHIP.
However, since this is a randomizer, he's probably going to give you something else. For quest NPCs, replace the item name with "#" (maximum name length is 8 characters, be sure to leave enough room):
9 ---------------- Okay, you got me. Take this. Received #
Alternate enemy sprites. 54 sprites, organized in 13 packs of 2 small sprites and 2 large sprites. Small enemy sprites are 32x32px, and large enemy sprites are 48x48px. Because the game employs each sprite with potentially several color palettes, the sprites here are stored in grayscale. Enemy palettes have black and 3 colors; usually one special/highlight color and a light and dark pair of similar hue. The sprites in enemies.png use the following convention:
black = black
white = special/highlight color
light gray = light hue
dark gray = dark hue
Enemy names. 128 names total, each name can have a maximum of 8 characters, including spaces. A new enemy name importer uses extra room in the ROM, so no need to worry about the total number of characters; all 128 could have 8 characters if desired. Each line begins with a 3-digit number, a space, and then the name. The numbers must ascend 000, 001, 002, 003 … 125, 126, 127. See reference below for the vanilla names.
Fiend battle graphics. All four fiends together laid out in a square, Total size is 128x128. Left to right, top to bottom: Lich, Kary, Kraken, Tiamat. Each fiend is 64x64. Each fiend gets two palettes, however you can only use one palette within any given metatile. Lich and Kary share a pattern table, so between the two of them at least 58 of the tiles must be empty (all black). The same applies Kraken and Tiamat. Reference image for fiends.
FFR flags in json format to be loaded at the same time that the resource pack is loaded.
Gear icons (the ones displayed in text, next to the name). 8x8 images lined up horizontally, white on black. Reference image for gear icons.
Character battle and mapmap graphics. See "Load custom player sprites" tooltip (Fun%) for character import details details.
Opening blue screen text. Monospace ASCII text. Up to 22 lines, 32 characters wide.
Tiles graphics for the overworld. 256x128. Each map tile is a 16x16 metatile, laid out 16x8 for a total of 128 map tiles. Each map tile has its own palette, but there can only be a total of four distinct palettes among all map tiles. In addition, there can only be 245 distinct 8x8 tiles. Since each map tile consists of four 8x8 tiles, this means the some 8x8 tiles must be reused within map tiles. Reference image for overworld maptiles.
Overworld map that will be loaded at the same time that the resource pack is loaded, in the json format produced by the "export map" button on the "Overworld" tab.
Tile graphics for towns. Same size and restrictions apply as for maptiles.png, except with the further limitation that the town graphics can only have 128 distinct 8x8 tiles. (However, towns have a lot of duplication, e.g. each door is a different map tile, but usually share the same graphic tiles). Reference image for town map tiles.
In-battle graphics when the character swings a weapon. Each weapon is a single 16x16 image lined up horizontally. Weapons must be white and two shades of grey, as they are re-colored in game. Reference image for weapons.
Feature available in beta, or FFR 4.5
Replacement spellbook to load. Vanilla spellbook for reference. Valid values for fields: