Pokémon Mystery Dungeon: Red Rescue Team/Dungeons Floors Data/Main Data

From Data Crystal
< Pokémon Mystery Dungeon: Red Rescue Team‎ | Dungeons Floors Data
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This is a sub-page of Pokémon Mystery Dungeon: Red Rescue Team/Dungeons Floors Data.

So very stubbly.
This page is rather stubbly and could use some expansion.
Are you a bad enough dude to rescue this article?
Dungeons Floors Data: Main Data
Game Pokémon Mystery Dungeon: Red Rescue Team
Start Address 0x04A9F74
End Address 0x04B6063
# of Entries 1764
Entry Length 28 bytes (0x1C)
Total Length 49392 bytes (0xC0F0)
Back to the ROM map

Every entry determines various floor setting. Below is explained entry structure.

Floor Layout Data

  • Length: 2 bytes
  • Offset within entry: 0x00-0x01
  • Range of unique values: 0x01-0x0C for first byte. Second byte varies depending on first byte, repetitions are common.

This value regulates the approximate layout to be generated for the floor, regulating things like the number of rooms and their size and disposition. When the first byte is 02 a monster house is spawned.

Terrain Tileset ID

  • Length: 1 byte
  • Offset within entry: 0x02
  • Range of values: 0-75 (0x00-0x4B)

Background Music ID

  • Length: 1 byte
  • Offset within entry: 0x03
  • Range of values: 0-26 (00-1A)

Weather ID

  • Length: 1 byte
  • Offset within entry: 0x04
  • Range of values: 0-8 (0x0-0x8)
00: Clear
01: Sunny
02: Sandstorm
03: Cloudy
04: Rain
05: Hail
06: Fog
07: Snow
08: Random

Pokémon Density

  • Length: 1 byte
  • Offset within entry: 0x06
  • Range of values: 0-255 (0x00-0xFF)

Shop Density

  • Length: 1 byte
  • Offset within entry: 0x07
  • Range of values: Currently Unknown

This value determines the probability of a shop spawning on a floor.

Monster House Density

  • Length: 1 byte
  • Offset within entry: 0x08
  • Range of values: Currently Unknown

This value determines the probability of a monster house spawning on a floor.

Item Usability

  • Length: 1 byte
  • Offset within entry: 0x0A
  • Range of values: Currently Unknown

Determines how often an item will be spawned already being sticky.

Item Density

  • Length: 1 byte
  • Offset within entry: 0x15
  • Range of values: 0-255 (0x00-0xFF)

Trap Density

  • Length: 1 byte
  • Offset within entry: 0x16
  • Range of values: 0-255 (0x00-0xFF)

Floor Number?

  • Length: 1 byte
  • Offset within entry: 0x17
  • Range of values: Currently Unknown

Seems to indicate the floor number, tough modifying it don't seem to affect anything.

Event Floor

  • Length: 1 byte
  • Offset within entry: 0x18
  • Range of values:

If different from zero, sets a prefabricated floor layout and/or shows a cutscene. Note that many cutscenes require specific animations that only few pokémon have implemented. To avoid game crashing, the appropriate pokémon must be present in the pokémon list set by the relative Floor Data ID Table entry.

Visibility

  • Length: 1 byte
  • Offset within entry: 0x22
  • Range of values: 0-2 (0x00-0x02)

Sets the range of visibility for the floor, making the player unable to see on the screen enemy Pokémon present outside the set range. This also limits the range of room-ranged moves when used outside rooms.

00: Full visibility
01: Can't see outside room from inside, 1-tile visibility outside rooms
02: Can't see outside room from inside, 2-tiles visibility outside rooms

Max POKé Found

  • Length: 1 byte
  • Offset within entry: 0x23
  • Range of values: 0-38 (0x00-0x26)

This regulates the max value of every pile of money found on the floor.

When the game generates a pile of POKé to be placed on the floor, it draws a random value from 1 to 100, which points to one of the 100 values below. If the value drawed is greater than the max POKé value multiplied by 40, it will halve the value ID (rounding up) and check again if it is greater, and repeating this until it gets a value smaller than the set maximum.

      4,     6,    10,    14,    22,    26,    34,    38,    46,    58
     62,    74,    82,    86,    94,   106,   118,   122,   134,   142
    146,   158,   166,   178,   194,   202,   206,   214,   218,   226
    254,   262,   274,   278,   298,   302,   314,   326,   334,   346
    358,   362,   382,   386,   394,   398,   422,   446,   454,   458
    466,   478,   482,   502,   514,   526,   538,   542,   554,   562
    566,   586,   614,   622,   626,   634,   662,   674,   694,   698
    706,   718,   734,   746,   758,   768,   778,   794,   802,   818
    838,   842,   862,   866,   878,   886,   898,   914,   922,   926
    934,   958,   974,   982,   998,  1000,  1100,  1300,  1500, 20000

Note that due to how the amout is calculated, it is useless to use values greater than 38 (0x26), except in case these 100 standard values are modified. These are present at offset $010A3F0, as little-endian unsigned long int values.