-
Notifications
You must be signed in to change notification settings - Fork 9
Rooms File Format
Ellendar edited this page Nov 2, 2023
·
3 revisions
The rooms file is a JSON array of objects representing each individual room's properties. These rooms are loaded when the Randomizer runs, and used as a pool of rooms from which palaces are constructed.
The room object has the following properties
- Name - The name of the room. This is used to make identifying rooms easy both within the file and while debugging the code.
- Group - Which group of rooms this room belongs to for the sake of options to select which rooms are in the pool. Supported values are [VANILLA, V4_0, V4_4]
- Map - Map number of used in the ROM. This is only required for vanilla rooms.
- Enabled - If true, the room can be used. If false it will be ignored.
- Connections - Hex string representing 4 bytes indicating which room each of the 4 potential room exits goes to. Each room exit uses the high 6 bits. 0-62 indicates an exit to that map number, 63 exits outside the palace. The low 2 bits are which page of the map you will enter from for that exit. Exits are in the order Left, Down, Up, Right
- Enemies - String used in the ROM to represent the "vanilla" enemies for that room. Format to be documented elsewhere.
- SideviewData - String representing the structure of the room. Format to be documented elsewhere.
- Bitmask - Format to be documented elsewhere.
- Requirements - List of things this room can be traversed with. An array of requirements represents OR conditions. An array within that array represents an AND condition, which are ORed with the other conditions in the base array. For example: [GLOVE, FAIRY] means glove OR fairy can traverse the room. [FAIRY, [JUMP, DASH]] means fairy or both jump and dash. [ [JUMP, GLOVE] ] would mean specifically jump and glove are both required. [] is a room with no requirements. Possible requirement types are [JUMP, FAIRY, UPSTAB, DOWNSTAB, KEY, DASH, GLOVE, REFLECT, SPELL, FIVE_CONTAINERS, SIX_CONTAINERS, SEVEN_CONTAINERS, EIGHT_CONTAINERS, TROPHY, MEDICINE, CHILD]
- HasItem - true if the room is an item room.
- HasBoss - true if the room has a boss. This is true of both boss rooms and passthrough or item rooms that contain bosses, but are not the end of dungeon boss room.
- IsBossRoom - true if this is a boss room, meaning the room at the end of the dungeon with the crystal statue (or dark link)
- HasDrop - true if the room has a drop.
- ElevatorScreen - If you enter the map from an elevator, this is the page (0-3) you will enter on.
- MemoryAddress - Starting memory address of the sideview data. Used for vanilla/legacy support.
- IsUpDownReversed - If true, the bytes for Up and Down are reversed. This is only used in certain vanilla rooms, and should be avoided unless you think it is absolutely necessary for some room design
- IsDropZone - true if this room can be dropped into
- IsThunderBirdRoom - true if this room has thunderbird
- IsEntrance - true if this room is a palace entrance
- PalaceNumber - if this is non-null, this room can only be included in the palace number indicated (7 for GP), otherwise the room can appear in any palace
- PalaceGroup - Only used for vanilla palaces.
- LinkedRoomName - Used for linking rooms to implement segmented rooms. If a room is segmented, it needs 2 rooms in the file in order to work properly. One room should be marked as enabled, the other not (otherwise the room will appear twice as often). Both rooms should have their names set, and LinkedRoomName set to the name of the other. Each half of the room should only have the exit data for exits connected to that segment. Other exits should be set to FC. If either half of the room is an item room, that room MUST be the enabled room.
- Author - Name of the author of the room.