The current URL is datacrystal.tcrf.net.
Dragon Quest Monsters: Joker/ROM map
The following article is a ROM map for Dragon Quest Monsters: Joker.
Filesystem
- data - Data files that the game reads information from (ex. images, tables, etc.).
- overlay - Overlay binary files.
- overlay_0000.bin - Overlay for the overworld.
- overlay_0001.bin - Overlay for battles.
- overlay_0002.bin - Overlay for currently unknown purpose.
File Formats
File extension | Description |
---|---|
bin | Various files in arbitrary binary formats. |
bmp | Bitmap image file. Miscellaneous leftover images form development. |
can | |
CHR | |
d16 | Image file format used for cutscenes. |
dma | |
efc | |
enct | |
evt | Events including cutscenes and overworld interactions. |
map | FPK files that store map info. |
NCGR | Graphical tiles (Nitro Character Graphic Resource) |
NCLR | Color palette (Nitro CoLoR) |
nsbca | Joint animations. |
nsbma | Material change animations. |
nsbmd | 3D models, textures, palettes |
nsbta | Material animations. |
NSCR | Maps / images? (Nitro SCreen Resource) |
PAL | |
pal | |
pos | Positional information for objects during events? |
sadl | |
scn | |
SCR | |
sdat | Sound data |
tm | |
(No extension) |
FPK Package Files
The game stores some files together into one package file. These package files have a file extension of ".bin" or ".map" and begin with the magic letters "FPK".
struct file {
u8 name_info[0x20];
u32 offset;
u32 size;
u8 data[size] @ offset;
};
struct fpk {
u32 magic;
u32 num_files;
file files[num_files];
};
fpk fpk @ 0x0;
d16 Image Files
The game stores cutscene image files in the binary "d16" file format. Values are stored as little endian.
u32 magic @ 0x00; // "D16 " (44 31 36 00)
u16 width @ 0x04;
u16 height @ 0x06;
u16 pixels[width * height] @ 0x08; // 16bit colors, 0b1BBBBBGGGGGRRRRR
Event Files
The game stores events as binary files in the custom ".evt" file format. Event files consist of a data portion and an instructions portion.
Instructions are executed one by one in order. Instruction 0x0A will initiate a new separate thread of execution, which runs concurrently, but not in parallel, with the main execution thread of the event.
#include "std/mem.pat"
u32 magic @ 0x00;
u8 data[0x1000] @ 0x04;
struct instruction {
u32 type;
u32 length;
u8 arguments[length - 8];
};
// Instruction from end of data section to end of file
instruction instructions[while(!std::mem::eof())] @ 0x1004;
In the European release of the game, many event files are stored as FPK package files. The package files contain 5 event files, one for each language the game supports:
- ".evD" - German
- ".evE" - English
- ".evF" - French
- ".evI" - Italian
- ".evS" - Spanish
Binary files
Dir | Name | File extension | Category | Description |
---|---|---|---|---|
./ | arm7.bin | bin | Exectuable | |
./ | arm9.bin | bin | Exectuable | The exectuable with most of the game's code. |
./ | banner.bin | bin | ||
./ | header.bin | bin | ||
./ | y7.bin | bin | ||
./ | y9.bin | bin | ||
overlay | overlay_0000.bin | bin | Exectuable | |
overlay | overlay_0001.bin | bin | Exectuable | |
overlay | overlay_0002.bin | bin | Exectuable | |
data | AI_ActionTBL.bin | bin | ||
data | AI_CorrectTbl.bin | bin | ||
data | AI_IntelTBL.bin | bin | ||
data | AI_PatternTbl.bin | bin | ||
data | AI_TargetSelectAllyTbl.bin | bin | ||
data | AI_TargetSelectEnemyTbl.bin | bin | ||
data | AI_TargetSelectItemTbl.bin | bin | ||
data | AbilityTbl.bin | bin | Data table | Table of stat increase per-level categories |
data | BtlChrTbl.bin | bin | ||
data | BtlChrTimeTbl.bin | bin | ||
data | BtlEfcTbl.bin | bin | ||
data | BtlEfcTblWhip.bin | bin | ||
data | BtlEnmyPrm.bin | bin | Data table | Table of special encounter monsters (ex. bosses) |
data | BtlMstrPrm.bin | bin | ||
data | ChgContentTbl.bin | bin | ||
data | ChgMnstrTbl.bin | bin | ||
data | DamageItemTbl.bin | bin | ||
data | DamageTbl.bin | bin | ||
data | DemoChrTbl.bin | bin | ||
data | EnmyKindTbl.bin | bin | Data table | Table of monster species |
data | EnmyPtnTbl.bin | bin | ||
data | ExperienceTbl.bin | bin | ||
data | FldChrTbl.bin | bin | ||
data | FldEnmyPrm.bin | bin | ||
data | FldMstrPrm.bin | bin | ||
data | ItemTbl.bin | bin | Data table | Table of items and equipment |
data | ModelTbl.bin | bin | ||
data | MotionTbl.bin | bin | ||
data | MstrPtnTbl.bin | bin | ||
data | SkillPointTbl.bin | bin | ||
data | SkillTbl.bin | bin | Data table | Table of skill sets |
data | TokugiDataTbl.bin | bin | ||
data | ViewChrTbl.bin | bin | ||
data | btl_data.bin | bin | ||
data | console_data.bin | bin | ||
data | field_data.bin | bin | ||
data | infomation_data.bin | bin | ||
data | island_data.bin | bin | ||
data | joker_00.bin | bin | ||
data | keybord_data.bin | bin | ||
data | omiaitbl.bin | bin | ||
data | sd_data.bin | bin | ||
data | shop_data.bin | bin | ||
data | shop_vram.bin | bin | ||
data | start_data.bin | bin | ||
data | status_data.bin | bin | ||
data | wall_bank.bin | bin | ||
data | wall_base.bin | bin | ||
data | wall_combi.bin | bin | ||
data | wall_gpinfo.bin | bin | ||
data | wall_itemshop.bin | bin | ||
data | wall_keep.bin | bin | ||
data | wall_skillpoint.bin | bin |
AbilityTbl.bin
The ability table stores level-up stat increase patterns, which determine how many stat points a monster will get when leveling up. Each pattern includes 99 unsigned integers which represent stat value increases for each level (1-99). There are 32 different patterns in total.
Each monster species is given 24 stat increase patterns. 6 groups corresponding to the different monster stats: max hp, max mp, attack, defense, agility, and wisdom. Each of the six groups has 4 patterns which apply to different level ranges: level 1 to 9, 10 to 39, 40 to 50, and 51 to 99.
struct ability {
// One byte for each level
u8 increase[99];
};
struct AbilityTbl {
ability abilities[32];
};
AbilityTbl table @ 0x0;
EnmyKindTbl.bin
The enemy kind table stores information on the different monster species, such as default stats, stat limits, and stat increase pattern ids.
struct species {
u32 unknown_a;
u8 rank_and_family; // Lower 4 bits are the rank (0x0F), higher 4 bits are the family (0xF0)
u8 unkown_b[3];
u8 unknown_c[4];
u32 weapon_compatibility_and_something_else;
u8 traits[5];
u8 unknown_d[3];
u8 unknown_dde[4];
u8 default_max_hp;
u8 default_max_mp;
u8 default_attack;
u8 default_defense;
u8 default_agility;
u8 default_wisdom;
u8 unknown_de[2];
u16 max_hp_limit;
u16 max_mp_limit;
u16 attack_limit;
u16 defense_limit;
u16 agility_limit;
u16 wisdom_limit;
u8 max_hp_increase_indicies[4];
u8 max_mp_increase_indicies[4];
u8 attack_increase_indicies[4];
u8 defense_increase_indicies[4];
u8 agility_increase_indicies[4];
u8 wisdom_increase_indicies[4];
u8 skill_set;
u8 unknown[75];
};
struct enmy_kind_tbl {
u32 magic;
u32 size;
species species[size];
};
enmy_kind_tbl enmy_kind_tbl @ 0x0;
SkillTbl.bin
The skill set table stores information on the different skill sets that monsters can have.
Skill sets can have a maximum of 10 reward levels. At each reward level the skill set can grant one or more skills and/or traits. Stat increases are counted as traits for this purpose. Reward levels can grant multiple skills or traits per level, for example when a skill set rewards an upgraded skill or trait (ex. Frizzle) that reward level will award both the upgraded skill and all lower skills (ex. awarding both Frizzle and Frizz).
struct skill_points_requirement {
u16 points_delta;
u16 points_total;
};
struct skill_entry {
u16 skill_ids[4];
u8 unknown_5[4];
};
struct trait_entry {
u8 traits[4];
};
struct skill_set {
u8 can_upgrade;
u8 category;
u8 max_skill_points;
u8 unknown_3;
skill_points_requirement skill_points_requirements[10];
skill_entry skills[10];
trait_entry traits[10];
u16 skill_set_id;
u8 unknown_a[2];
u16 species_ids[6];
u32 unknown_c[5]; // appears to be in the NA release, but not the JP release
};
skill_set skill_sets[0xC2] @ 0x8;
Internal Data for Dragon Quest Monsters: Joker
| |
---|---|