The current URL is datacrystal.tcrf.net.
Dragon Quest Monsters: Joker/ROM map: Difference between revisions
(Added info on enemy kind table) |
m (→FPK Package Files: Add that map files are fpk files) |
||
Line 10: | Line 10: | ||
==File Formats== | ==File Formats== | ||
===FPK Package Files=== | ===FPK Package Files=== | ||
The game stores some files together into one package file. These package files have a file extension of ".bin" and begin with the magic letters "FPK". | 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". | ||
<syntaxhighlight lang="rust"> | <syntaxhighlight lang="rust"> |
Revision as of 07:45, 1 October 2024
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
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;
Internal Data for Dragon Quest Monsters: Joker
| |
---|---|