Here's what I have in my tool. I did it for 8.3 but it looks like everything is the same in 9.1.
entries.Add(new rdbColumn("id", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeIDScrambled, 4, 1, 0));
entries.Add(new rdbColumn("monster_group", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("name_id", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("location_id", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("transform_level", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("walk_type", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("slant_type", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("size", rdbColumn.Type.TypeDecimal, rdbColumn.ReadType.ReadTypeSingle, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("scale", rdbColumn.Type.TypeDecimal, rdbColumn.ReadType.ReadTypeSingle, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("target_fx_size", rdbColumn.Type.TypeDecimal, rdbColumn.ReadType.ReadTypeSingle, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("level", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("grp", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("affiliation", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 0, 0, true, m_dbg));
entries.Add(new rdbColumn("species_id", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 0, 0, true, m_dbg));
entries.Add(new rdbColumn("magic_type", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("race", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("visible_range", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("chase_range", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("monster_type", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("monster_grade_icon", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 0, 0, true, m_dbg));
entries.Add(new rdbColumn("stat_id", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("monster_skill_link_id", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("ability", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("standard_walk_spped", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("standard_run_spped", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("walk_speed", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("run_speed", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("attack_range", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt2DecDiv100, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("hidesense_range", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt2DecDiv100, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("hp", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("mp", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("attack_point", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("magic_point", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("defence", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("magic_defence", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("attack_speed", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("magic_speed", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("accuracy", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("avoid", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("magic_accuracy", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("magic_avoid", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("taming_id", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("creature_taming_code", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 0, 0, true, m_dbg));
entries.Add(new rdbColumn("taming_percentage", rdbColumn.Type.TypeDecimal, rdbColumn.ReadType.ReadTypeSingle, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("taming_exp_mod", rdbColumn.Type.TypeDecimal, rdbColumn.ReadType.ReadTypeSingle, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("exp", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("jp", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("gold_drop_percentage", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("gold_min", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("gold_max", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("chaos_drop_percentage", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("chaos_min", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("chaos_max", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("exp_2", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("jp_2", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("gold_min_2", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("gold_max_2", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("chaos_min_2", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("chaos_max_2", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("drop_table_link_id", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("texture_group", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("local_flag", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbMonsterResourceFlagColumn());
entries.Add(new rdbColumn("model", rdbColumn.Type.TypeString, rdbColumn.ReadType.ReadTypeString, 256, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("motion_file_id", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("camera_x", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("camera_y", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("camera_z", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("target_x", rdbColumn.Type.TypeDecimal, rdbColumn.ReadType.ReadTypeSingle, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("target_y", rdbColumn.Type.TypeDecimal, rdbColumn.ReadType.ReadTypeSingle, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("target_z", rdbColumn.Type.TypeDecimal, rdbColumn.ReadType.ReadTypeSingle, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("fight_type", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("material", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("weapon_type", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));
entries.Add(new rdbColumn("attack_motion_speed", rdbColumn.Type.TypeInt32, rdbColumn.ReadType.ReadTypeInt32, 4, 1, 0, true, m_dbg));